将图像复制到特定坐标

时间:2016-08-01 20:39:04

标签: java

我有一个运作良好的程序;但是,我希望能够将地球图像复制到创建的新图像的不同部分。例如,如果我可以将地球的图片放在左下角而不是左上角。

import java.awt.*;
public class CopyCatDemo
{
    public static void main(String[] args)
    {
        Picture sourcePicture = new Picture("earth.jpg");
        System.out.println("Width: " + sourcePicture.getWidth());
        System.out.println("Height: " + sourcePicture.getHeight());
        Picture targetPicture1 = new Picture(800,800);
        targetPicture1.setAllPixelsToAColor(Color.BLACK);

        Pixel sourcePixel, targetPixel = null;
        Color sourceColor, targetColor = null;

        for(int y = 0; y < sourcePicture.getHeight(); y++)
        {
            for(int x = 0; x < sourcePicture.getWidth(); x++)
            {
                sourcePixel = sourcePicture.getPixel(x,y);
                sourceColor = sourcePixel.getColor();
                targetPixel = targetPicture1.getPixel(x,y);
                targetPixel.setColor(sourceColor);         
            }
        }

        sourcePicture.show();
        targetPicture1.show();
        targetPicture1.write("NewFile.jpg");
    }//end of main method
}//end of class

所以,如果有人可以请您演示如何编辑此代码以使地球的图片显示在左下角作为新目标图像的示例,这将是值得赞赏的!谢谢!

1 个答案:

答案 0 :(得分:0)

  

如果我可以将地球的图片放在左下角而不是左上角。

使用适当的数学运算来偏移坐标 - 例如,要移动到左下角,您需要垂直偏移目标像素 - 换句话说,将目标像素的y值偏移目标的高度减去高度来源

int vOffset = targetPicture1.getHeight() - sourcePicture.getHeight();
//
targetPixel = targetPicture1.getPixel(x, vOffset + y);