栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Java中将色调应用于图像

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Java中将色调应用于图像

有一种方法,但是您必须使用一些BufferedImage转换。创建它们后,请对其进行缓存或保存下来,以便以后轻松重用。本质上,您要从仅使用alpha层关闭像素(还提供平滑的抗锯齿)的黑色图像(源颜色#000000)开始。例如,在源图像中,每个像素都是黑色的,但是alpha通道因像素而异。

首先,请阅读本文以获取一些背景信息:http :
//www.javalobby.org/articles/ultimate-
image/

完成该入门知识后,您需要将图像加载到BufferedImage中:

BufferedImage loadImg = ImageUtil.loadImage("C:/Images/myimg.png");

接下来,您需要创建一个新的BufferedImage来进行转换:

public BufferedImage colorImage(BufferedImage loadImg, int red, int green, int blue) {    BufferedImage img = new BufferedImage(loadImg.getWidth(), loadImg.getHeight(),        BufferedImage.TRANSLUCENT);    Graphics2D graphics = img.createGraphics();     Color newColor = new Color(red, green, blue, 0 );    graphics.setXORMode(newColor);    graphics.drawImage(loadImg, null, 0, 0);    graphics.dispose();    return img;}

本质上,setXORMode会将您提供的颜色与源图像中的颜色进行异或。如果源图像为黑色,则您指定的颜色将被写入。对于使用“
0”表示Alpha通道的新颜色,将遵循原始Alpha通道值。最终结果是您要寻找的复合材料。

编辑:

您可以通过以下两种方式之一来加载初始BufferedImage。最简单的方法是使用Java的更新ImageIO
API:http
:
//download.oracle.com/javase/6/docs/api/javax/imageio/ImageIO.html将文件直接加载到BufferedImage。调用看起来像这样:

BufferedImage img = ImageIO.read(url);

或者,您可以创建一种使用ToolKit读取图像的方法。

public BufferedImage loadImage(String url) {    ImageIcon icon = new ImageIcon(url);    Image image = icon.getImage();    // Create empty BufferedImage, sized to Image    BufferedImage buffImage =       new BufferedImage(        image.getWidth(null),         image.getHeight(null),         BufferedImage.TYPE_INT_ARGB);    // Draw Image into BufferedImage    Graphics g = buffImage.getGraphics();    g.drawImage(image, 0, 0, null);    return buffImage;}

当然,如果您注意的话,我们必须做完全相同的事情以将图像读取为缓冲图像,就像我们为它着色一样。简而言之,如果您更改了

colorImage
方法的签名以接受
Image
对象,则只需对getWidth()和getHeight()方法进行一些更改即可使其生效。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/419264.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号