2013-10-25 2 views
1

У меня есть 3 изображения в оттенках серого Я хочу разрисовать цвет, я задал аналогичный вопрос на прошлой неделе и взял там совет, у меня есть код ниже, который читает значения RGB для каждого пикселя на изображении. Я хочу сделать это для каждого отдельного изображения, то есть 1-го изображения, считывающего значение красного пикселя, 2-го изображения, читаемого значением синего пикселя, и третьего изображения, читающего значение зеленого пикселя, и создания нового изображения из этого. Я попытался повторить код 3 раза, но он просто, казалось, применил его к одному пикселю и продолжал повторять его, но я не мог узнать, почему; Я по существу копировал и вставлял код 3 раза, но я уверен, что это более короткий и простой способ, просто не уверен, что!False цветное изображение в Java из стека

Im чтение изображения с помощью следующих действий:

public static void main(final String args[]) 
    throws IOException 
{ 
    File file = new File("src/resources/rgb.jpg"); 
    BufferedImage src = ImageIO.read(file); 
    BufferedImage image = toBufferedImage(src); 
    save(image, "png"); 
} 

private void img1(BufferedImage image, BufferedImage src) { 
    for (int x = 0; x < image.getWidth(); x++) { 
     for (int y = 0; y < image.getHeight(); y++) { 

      int clr = src.getRGB(x, y); 
      int red = (clr & 0x00ff0000) >> 16; 
      //int green = (clr & 0x0000ff00) >> 8; 
      //int blue = clr & 0x000000ff; 

     } 
    } 
} 

Так что по существу нужно повторить код 3 раза, а затем создать новое изображение из результата. Просто интересно, может ли кто-нибудь помочь?

Заранее спасибо

ответ

1

Подтяните двойной цикл из в метод (не уверен, как именно вы хотите работать):

private void doStuffToImage(Image image, Image src) { 
    for (int x = 0; x < image.getWidth(); x++) { 
    for (int y = 0; y < image.getHeight(); y++) { 
     final int clr = src.getRGB(x, y); 
     final int red = (clr & 0x00ff0000) >> 16; 
     final int green = (clr & 0x0000ff00) >> 8; 
     final int blue = clr & 0x000000ff; 
    } 
    } 
} 

Кроме того, канавы все final с.

+0

Создав метод, как вы сказали выше, определите все переменные в основном методе? – user2517280

+0

Nah, просто сохраните их в качестве локальных переменных для этого метода, если они вам не нужны на улице. Как я уже сказал, я не совсем уверен, что вы пытаетесь сделать, но что-то вроде этого уменьшит дублирование кода. – yamafontes

+0

В то же время im, по сути, просто пытается загрузить в 3 буферизованных изображения и получать переменные для красного, зеленого и синего для каждого, как в приведенном выше коде. Ive отредактировал мой код в оригинальном посте, это то, что вы имели в виду? – user2517280

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