Java替换图像的背景

时间:2015-06-10 20:34:09

标签: java image colors background pixel

我正在编写一个程序,我拍摄一张照片并替换该照片的背景。

我的照片是:

black cat with white background

我用于猫的背景是:

shiny galaxy background

我知道为了这个我必须使用猫图片并采用小于255的颜色像素,因为白色的红色,绿色和蓝色值是255.那么我采取那些较少的像素比组成猫的255,并将它放在相同的X和Y位置的背景图片上。我遇到的问题是我无法弄清楚如何对其进行编码以使其正常工作。

我的基本代码是:

import java.awt.*;
public class TrueColors
{

   public static void main(String [] args) 
   {
       Picture pictureObj2 = new Picture("9.01 cat picture.jpg");
       pictureObj2.explore();
       int redValue = 0; int greenValue = 0; int blueValue = 0;

       Pixel targetPixel = new Pixel(pictureObj2, 0, 0);
       Color pixelColor = null;

       for(int y = 0; y < pictureObj2.getHeight(); y++)
       {
           for(int x = 0; x < pictureObj2.getWidth(); x++)
           {
               targetPixel = pictureObj2.getPixel(x,y);
               pixelColor = targetPixel.getColor();

               redValue = pixelColor.getRed();
               greenValue = pixelColor.getGreen();
               blueValue = pixelColor.getBlue();

               pixelColor = new Color(redValue, greenValue, blueValue);
               targetPixel.setColor(pixelColor);

           }
       }

       pictureObj2.explore();
       pictureObj2.write("ColoredCat.jpg");
       pictureObj2.show();

   }   
}

我只是想知道你是否可以帮助我弄清楚如何理解我理解的这个程序的概念并将其转化为代码

谢谢

1 个答案:

答案 0 :(得分:0)

你所拥有的几乎是正确的。只需阅读您的第二张照片,就像您在这里看到第一张照片一样:

Picture background = new Picture("background.png");
background.explore();

然后在你的内循环中简单地做:

targetPixel = pictureObj2.getPixel(x,y);
pixelColor = targetPixel.getColor();

if(!pixelColor.equals(WHITE)) //test if you have a blank pixel
    background.getPixel(x,y).setColor(pixelColor); //if not its a cat pixel so add it on top of the background