设置像素点的Alpha值

aBreaker7 2019-04-24 03:16:25
public static void conver(String filePath) throws IOException {

int xs = 0;
int ys = 0;
if(Test1.xstar != -1){
xs = Test1.xstar;
ys = Test1.ystar;
}



try {
File te = new File("2.jpg");
te.delete();
}catch (Exception e){

}
File file=new File(filePath);


int[] rgb = new int[3];

BufferedImage bi = null;
try {
bi = ImageIO.read(file);
} catch (Exception e) {
e.printStackTrace();
}

int width = bi.getWidth();
int height = bi.getHeight();
int minx = bi.getMinX();
int miny = bi.getMinY();
System.out.println("正在处理:"+file.getName());

//获取初始位置像素点颜色值
int[] rgbstar = new int[3];
int pixel_1 = bi.getRGB(xs, ys);
rgbstar[0] = (pixel_1 & 0xff0000) >> 16;
rgbstar[1] = (pixel_1 & 0xff00) >> 8;
rgbstar[2] = (pixel_1 & 0xff);

for (int i = minx; i < width; i++) {
for (int j = miny; j < height; j++) {
int pixel = bi.getRGB(i, j);
rgb[0] = (pixel & 0xff0000) >> 16;
rgb[1] = (pixel & 0xff00) >> 8;
rgb[2] = (pixel & 0xff);

//计算与起始点的色差
int redgap = rgb[0] - rgbstar[0];
int greengap = rgb[1] - rgbstar[1];
int bluegap = rgb[2] - rgbstar[2];
redgap *= redgap;
greengap *= greengap;
bluegap *= bluegap;
double gap=Math.sqrt(redgap+greengap+bluegap);

//不满足设定alpha为0
if(gap > Test1.gaplim){
bi.setRGB(i, j,new Color(255,0,0,0).getRGB());
}
}
}
System.out.println("\t处理完毕:"+file.getName());
System.out.println();


FileOutputStream ops = new FileOutputStream(new File("2.jpg"));
ImageIO.write(bi,"jpg", ops);
ops.flush();
ops.close();
}

调用这个函数,代码中红色部分setRGB处设置的alpha值,但是不论这里alpha设置什么值,对图片的效果都没有任何影响,小白求解。。

...全文
427 3 打赏 收藏 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_39936465 2019-04-26
  • 打赏
  • 举报
回复
引用 2 楼 qq_40060513 的回复:
四个值,R、G、B、alpha,都是0-255
你这个是改变一个像素点,如果像素点不集中,或者太分散的话是不容易观察效果吧。我用完成的色块测试确实可以改变。 你设置个list存放改变的像素点看看到底有多少像素点被改变了。
qq_39936465 2019-04-25
  • 打赏
  • 举报
回复
引用 楼主 qq_40060513 的回复:
调用这个函数,代码中红色部分setRGB处设置的alpha值,但是不论这里alpha设置什么值,对图片的效果都没有任何影响,小白求解。。
bi.setRGB(i, j,new Color(255,0,0,0).getRGB()); 你这里有问题吧, rgb话只有3个值 , cmyk的只有0-100
aBreaker7 2019-04-25
  • 打赏
  • 举报
回复
引用 1 楼 qq_39936465 的回复:
[quote=引用 楼主 qq_40060513 的回复:] 调用这个函数,代码中红色部分setRGB处设置的alpha值,但是不论这里alpha设置什么值,对图片的效果都没有任何影响,小白求解。。
bi.setRGB(i, j,new Color(255,0,0,0).getRGB()); 你这里有问题吧, rgb话只有3个值 , cmyk的只有0-100[/quote]四个值,R、G、B、alpha,都是0-255

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧