`
fengzheng0603
  • 浏览: 72897 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

java改变png图片的透明度

    博客分类:
  • java
阅读更多
package cn;

import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;

public class ChangeImageAlpha {

/**
* 改变png图片的透明度
* @param srcImageFile 源图像地址
* @param descImageDir 输出图片的路径和名称
* @param alpha 输出图片的透明度1-10
*/
private static void setAlpha(String srcImageFile, String descImageDir,int alpha) {

    try {
    //读取图片
    FileInputStream stream = new FileInputStream(new File(srcImageFile));// 指定要读取的图片

    // 定义一个字节数组输出流,用于转换数组
    ByteArrayOutputStream os = new ByteArrayOutputStream();

    byte[] data =new byte[1024];// 定义一个1K大小的数组
    while (stream.read(data) != -1) {
    os.write(data);
    }

        ImageIcon imageIcon = new ImageIcon(os.toByteArray());
        BufferedImage bufferedImage = new BufferedImage(imageIcon.getIconWidth(), imageIcon.getIconHeight(),
        BufferedImage.TYPE_4BYTE_ABGR);
        Graphics2D g2D = (Graphics2D) bufferedImage.getGraphics();
        g2D.drawImage(imageIcon.getImage(), 0, 0, imageIcon.getImageObserver());

        //判读透明度是否越界
        if (alpha < 0) {
        alpha = 0;
        } else if (alpha > 10) {
        alpha = 10;
        }

        // 循环每一个像素点,改变像素点的Alpha值
        for (int j1 = bufferedImage.getMinY(); j1 < bufferedImage.getHeight(); j1++) {
        for (int j2 = bufferedImage.getMinX(); j2 < bufferedImage.getWidth(); j2++) {
        int rgb = bufferedImage.getRGB(j2, j1);
        rgb = ((alpha * 255 / 10) << 24) | (rgb & 0x00ffffff);
        bufferedImage.setRGB(j2, j1, rgb);
        }
        }
        g2D.drawImage(bufferedImage, 0, 0, imageIcon.getImageObserver());

        // 生成图片为PNG

        ImageIO.write(bufferedImage, "png", new File(descImageDir));

    } catch (Exception e) {
    e.printStackTrace();
    }

}

public static void main(String[] args) {
setAlpha("F:/gfsciy20110326fscjy1999ppp.png","F:/gfsciy20110326fscjy1999ppp-4.png", 4);

}


}
 

 

 

分享到:
评论

相关推荐

    java对图片改变大小,png防止变黑,加圆角 圆角外透明

    总的来说,Java提供了丰富的图像处理功能,通过合理的组合和运用,我们可以实现各种复杂的图像处理任务,包括改变图片大小、保持PNG透明度以及添加圆角等效果。在实际开发中,还需要注意性能优化,特别是在处理大量...

    java 半透明图片 实例代码

    在Java编程语言中,处理半透明...通过调整Alpha通道的值,我们可以改变图片的透明度,从而实现各种视觉效果,比如叠加图层、创建模糊边界等。这对于GUI应用程序、游戏开发或其他需要图形处理的项目来说是非常有用的。

    android ImageView单击事件与透明度处理

    在实际应用中,我们经常需要为ImageView添加单击事件监听,并且可能需要在用户点击时改变其透明度,以实现某种交互效果。这篇文章将详细探讨如何在Android中实现这些功能。 首先,我们需要理解Android中的事件处理...

    java 图片半透明特效

    对于更复杂的透明效果,如动态透明度改变,可以利用`JLayer`和自定义的`LayerUI`。`JLayer`是一个装饰组件,允许在组件之上添加额外的处理逻辑,如透明度动画。 通过这些技术,我们可以创建出各种各样的图片半透明...

    png图片换颜色java

    PNG格式因其支持透明度(阿尔法通道)而被广泛使用。本篇文章将详细探讨如何使用Java来实现PNG图片的颜色更换功能。 首先,我们需要了解PNG图片的基本结构。PNG是一种基于块的图像存储格式,包含图像数据、颜色空间...

    Java半透明图片实现的步骤及源代码.zip

    - **设置透明度**:如果需要改变图片的整体透明度,可以通过`setAlpha()`方法改变`Graphics2D`的Alpha值,或者在绘制前修改`BufferedImage`的每个像素的Alpha值。 - **绘制图片**:使用`Graphics2D.drawImage()`...

    基于java的半透明图片实现的步骤及源代码.zip

    在实际应用中,可能需要处理的不仅仅是单个像素或整个图像的透明度,还可能涉及到批量处理或者根据某种规则改变像素的透明度。例如,你可以遍历整个图像并根据每个像素的颜色来调整其透明度。 在压缩包的`codefans...

    ffmpeg 视频格式转换 透明水印 demo

    - 水印可以是静态图片(PNG有透明度支持)或动态文本。 - 添加水印的命令示例:`ffmpeg -i 输入视频 -vf "movie=watermark.png [watermark]; [in][watermark] overlay=W-w-10:H-h-10 [out]" -c:a copy 输出视频`。...

    java图片附加水印源码

    总的来说,这个Java代码库提供了图片水印功能,包括对水印的透明度和位置的自定义,以及支持生成带有水印的动画GIF。它利用了Java丰富的图像处理库,结合了颜色量化和数据压缩技术,是进行图片处理和编辑的实用工具...

    解决java压缩图片透明背景变黑色的问题

    为了保存图片的透明度,应该使用`BufferedImage.TYPE_INT_ARGB`或`BufferedImage.TYPE_INT_ARGB_PRE`。ARGB代表Alpha(透明度)、Red、Green和Blue,其中Alpha通道用于表示透明度。 修改后的代码如下: ```java ...

    Java半透明图片实现的步骤及源代码源码整理

    2. **设置图片的透明度**:通过`setAlpha()`方法改变图片的全局透明度。这会影响到图片中的所有像素。 ```java image.setAlpha(128); // 128表示50%的透明度 ``` 3. **修改单个像素的透明度**:如果你需要更精细地...

    java 常用 界面图标

    2. **自定义图标**:要改变应用的图标,首先你需要准备相应的图像文件,通常是.png或.ico格式,因为它们支持透明度,并且在各种分辨率下表现良好。Java提供`setIconImage(Image image)`方法来设置窗口图标,例如: ...

    基于Java的实例源码-半透明图片实现的步骤及源代码.zip

    本实例源码将指导开发者如何在Java中创建和处理具有透明度的图片,这对于GUI应用、游戏开发或者图像处理项目非常重要。以下是实现半透明图片的关键步骤,以及相关的Java API和方法。 1. **理解Alpha通道**: 在RGB...

    基于Java的半透明图片实现的步骤及源代码.zip

    在实际应用中,你可能需要根据具体需求进行调整,比如处理大量像素或使用特定算法改变图片的透明度。`codefans.net`中的源代码很可能是对这些概念的具体实现,通过阅读和学习这些代码,可以更深入地理解Java图像处理...

    java中图片的大小改变

    在不牺牲质量的前提下改变图片的分辨率是一项技术性较强的工作,涉及到图像处理的基本原理和Java中的相关API。本篇将详细介绍如何在Java中实现这个功能。 首先,Java提供了丰富的图形处理库,主要集中在`java.awt`...

    java图片压缩文件大小图片大小(支持gif动态图)

    GIF由多个帧组成,每个帧可能有自己的颜色表和透明度信息。处理GIF时,可能需要使用第三方库,如`gif4j`或`Apache Batik`,它们提供了更高级的API来处理动画序列和优化颜色表。 此外,为了实现根据指定高度进行压缩...

    Android代码-安卓图片旋转放大缩写透明度调整例子.rar

    在Android开发中,图片处理是一项常见的任务,包括旋转、放大、缩小以及调整透明度等操作。这个"Android代码-安卓图片旋转放大缩写透明度调整例子.rar"压缩包提供了相关的示例代码,可以帮助开发者理解如何在Android...

    图片透明模块.e.rar

    1. **PNG格式**: PNG是支持透明的图片格式之一,它使用Alpha通道来存储每个像素的透明度信息。因此,当处理PNG图片时,可以轻松地调整或保持其透明度。 2. **CSS3**: 在Web开发中,可以使用CSS3的`opacity`属性来...

    PngButton-在BUTTON上使用PNG图片

    如果PNG图片包含透明度,可以这样设置: ```xml &lt;!-- 按钮默认状态 --&gt; &lt;corners android:radius="5dp" /&gt; &lt;!-- 设置圆角 --&gt; &lt;!-- 按下状态 --&gt; &lt;bitmap android:src="@drawable/my_png_image" ...

    Java应用程序读取图片内容.zip

    像素值是一个整数,包含红色、绿色、蓝色和透明度信息。要解码这些颜色分量,可以使用以下代码: ```java int pixel = image.getRGB(x, y); int red = (pixel &gt;&gt; 16) & 0xFF; int green = (pixel &gt;&gt; 8) & 0xFF; ...

Global site tag (gtag.js) - Google Analytics