2014-01-27 2 views
1

Я хотел бы, для проекта java, изменить цвет модели волос (изменить цвет волос) с тенями и отразить ... На самом деле, я задавался вопросом, есть ли класс, который может измените цвет изображения с помощью кода RGB. Если это может помочь вам, вот картина мне нужно раскрасить:Раскрасьте картинку в java

enter image description here

+0

http://docs.oracle .com/javase/7/docs/api/java/awt/image/RGBImageFilter.html Вот пример: http://www.java2s.com/Code/Java/2D-Graphics-GUI/Afilterclasswhichtranslatesmoderatelywhitepixelstogreen.htm – NeplatnyUdaj

+5

I я люблю эту миску. – christopher

+0

спасибо за ваш совет чувак. – user3240711

ответ

11

Я полагаю, что вопрос затрагивающий не в слепо замене определенных пикселей с определенным (фиксированным) цветом, но на самом деле «крашение» образ. После того, как я написал класс образца, показывающий, как это может быть сделано:

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

Смежные вопросы