在java中着色图片

我想,对于一个java项目,用阴影改变头发模型的颜色(改变头发颜色)并反映……事实上,我想知道是否有一个类可以用RGB改变图片的颜色码。 如果这可以帮到你,这是我需要着色的图片:

在此处输入图像描述

我认为问题的目标不是盲目地用某种(固定)颜色替换某些像素,而是真正“染色”图像。 一旦我写了一个示例类,展示了如何做到这一点:

import java.awt.*; import java.awt.image.*; import java.io.*; import javax.swing.*; import javax.imageio.*; class DyeImage { public static void main(String args[]) { SwingUtilities.invokeLater(new Runnable() { public void run() { try { new DyeImage(); } catch (Exception e) { e.printStackTrace(); } } }); } public DyeImage() throws Exception { JFrame f = new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); BufferedImage image = ImageIO.read(new File("DRVpH.png")); JPanel panel = new JPanel(new GridLayout(1,0)); panel.add(new JLabel(new ImageIcon(image))); panel.add(new JLabel(new ImageIcon(dye(image, new Color(255,0,0,128))))); panel.add(new JLabel(new ImageIcon(dye(image, new Color(255,0,0,32))))); panel.add(new JLabel(new ImageIcon(dye(image, new Color(0,128,0,32))))); panel.add(new JLabel(new ImageIcon(dye(image, new Color(0,0,255,32))))); f.getContentPane().add(panel); f.pack(); f.setVisible(true); } private static BufferedImage dye(BufferedImage image, Color color) { int w = image.getWidth(); int h = image.getHeight(); BufferedImage dyed = new BufferedImage(w,h,BufferedImage.TYPE_INT_ARGB); Graphics2D g = dyed.createGraphics(); g.drawImage(image, 0,0, null); g.setComposite(AlphaComposite.SrcAtop); g.setColor(color); g.fillRect(0,0,w,h); g.dispose(); return dyed; } } 

给定图像和不同染色颜色的结果如下所示:

DyedImages01