java代码着色_在Java中对图像应用着色

有一种方法,但是您必须使用一些bufferedImage转换。一旦您创建了它们,就可以缓存它们或将它们保存下来,以便日后重用。从本质上讲,您希望从只使用alpha层关闭像素(也提供平滑的抗锯齿)的黑色图像(源颜色000000)开始。例如,在源图像中,每个像素都是黑色的,但是alpha通道在像素之间是不同的。

一旦你完成了这个初级读物,你就需要将你的图像加载到一个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 /* alpha needs to be zero */);

graphics.setXORMode(newColor);

graphics.drawImage(loadImg, null, 0, 0);

graphics.dispose();

return img;

}

本质上,setxormode将异或您在源图像中提供的颜色。如果源图像是黑色的,那么您提供的任何颜色都将按照您指定的方式写入。对于使用“0”作为alpha通道的新颜色,将尊重原始alpha通道值。最终结果是您要查找的组合。

编辑:

您可以用两种方法之一加载初始BufferedImage。最简单的是使用Java更新的IMAIO API:

http://download.oracle.com/javase/6/docs/api/javax/imageio/ImageIO.html

将文件直接加载到BufferedImage。电话看起来是这样的:

BufferedImage img = ImageIO.read(url);

或者,您可以使用工具箱创建一个方法来读取图像。

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()方法进行几次更改即可使其正常工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值