2015-06-16 6 views
2

Я делаю программу, где мне нужно преобразовать изображение в оттенках серого в изображение с цветовой палитрой с разными цветами.преобразование изображения из оттенков серого в цвет pallet

Например, оттенки серого картина будет выглядеть как черно-белое изображение, а конечный результат должен выглядеть следующим образом:

color pallete effect

Я понял, что я должен использовать, если заявление с (& & или ||). Но мне сложно определить, что добавить в утверждения if, чтобы создать этот эффект. Вы можете увидеть в моей программе, что я попытался запустить ее, но что если заявление, которое я распечатал, ничего не делал. Если кто-то может помочь мне с этим, тогда это будет здорово!

Благодаря

Мой код:

import java.awt.*; 
public class ConvertColor 
{ 
    public static void main(String [] args) 
    { 
     Picture pictureObj = new Picture("WashingtonMonument.png");  //creates a new Picture object representing the file in the parameter list     
     pictureObj.explore();           //explore the Picture object which is currently the unaltered original image 
     int redValue = 0; int greenValue = 0; int blueValue = 0; int luminance = 0;  //declare and initialize the variables that hold the red, green, and blue values (0-255) 

     Pixel pixelSource1 = new Pixel(pictureObj, 0,0); 
     Color pixelColor = null; 

     for(int y=0; y< pictureObj.getHeight(); y++) 
     { 
      for(int x=0; x< pictureObj.getWidth(); x++) 
      { 
       pixelSource1 = pictureObj.getPixel(x,y); 
       pixelColor = pixelSource1.getColor(); 
       redValue = pixelColor.getRed(); 
       blueValue = pixelColor.getBlue(); 
       greenValue = pixelColor.getGreen(); 
       luminance = (int)((redValue * .5)); 

       pixelSource1.setColor(new Color(luminance, luminance, luminance)); 
      } 
     } 

     if(redValue > 50 && blueValue < 190) 
      greenValue = (int) .5 * (pixelColor.getGreen()); 


     pictureObj.write("grayWashingtonMonument.png"); 
     pictureObj.show(); 
    } 
} 
+0

Не могли бы вы показать какую-то попытку? Ваш вопрос выглядит так, как вы могли бы сделать это для меня? – Blip

+1

А также исходный текст назначения? Я не понимаю, почему я настаиваю на том, чтобы использовать «if» и «&& or ||», должен иметь смысл ... – Fildor

+1

Что вы хотите сделать в своем заявлении if? – bhspencer

ответ

0

Чтобы преобразовать серого цвета, используя значение из ярче темнее, здесь есть решение, используя переключатель/случай заявление:

 for(int x=0; x< pictureObj.getWidth(); x++) 
     { 
      pixelSource1 = pictureObj.getPixel(x,y); 
      pixelColor = pixelSource1.getColor(); 
      redValue = pixelColor.getRed(); 
      blueValue = pixelColor.getBlue(); 
      greenValue = pixelColor.getGreen(); 
      int nr = 0; 
      int ng = 0; 
      int nb = 0; 
      int tempResult = redValue/21; 

      switch (tempResult){ 
      case 1 : nr = 255; nb = 127;break; 
      case 2 : nr = 255; nb = 255;break; 
      case 3 : nr = 127; nb = 255;break; 
      case 4 : nb = 255; break; 
      case 5 : ng = 128; nb = 255;break; 
      case 6 : ng = 255; nb = 255;break; 
      case 7 : ng = 255; nb = 128;break; 
      case 8 : ng = 255; break; 
      case 9 : nr = 128; ng = 255;break; 
      case 10 : nr = 255; ng = 255;break; 
      case 11 : nr = 255; ng = 128;break; 
      case 12 : nr = 255;break; 
      default : nr = 255; ng = 255; nb = 255; break;} 

      pixelSource1.setColor(new Color(nr, ng, nb)); 
     } 

Для 13 оттенков серого у нас есть соответствующий цвет.

Ответьте, если это сработает, потому что я не могу проверить его сам. Но логика правильная.

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