在java中将图像缩小到其高度和宽度的一半

时间:2015-11-05 08:29:58

标签: java image

我正在尝试将图像缩小到其高度和宽度的一半。这就是我到目前为止所拥有的。我不知道从那里去哪里。 一种方法是简单地用原始图像中的一个像素替换新缩小图像中的单个像素,该像素是原始图像中组的平均颜色。 我还可以创建一个新数组,其高度和宽度是作为参数传入的图像的高度和宽度的一半。然后,在我弄清楚颜色值应该是什么时,将新像素插入到新图像中。

public class ImageManipulation
{
public static void main(String[] args) throws FileNotFoundException 
{
    Pixel[][] image = readImage("griff.ppm");

    flipVertical(image);

    writeImage(image,"manipulatedImage.ppm");
}

public static void grayscale(Pixel[][] imageArr)
{
    int height = imageArr.length;
    int width = imageArr[0].length;

    for(int row = 0; row < height; row++)
    {
        for(int col = 0; col < width; col++)
        {
            Pixel p = imageArr[row][col];

            int grayValue = (p.getRed() + p.getBlue() + p.getGreen())/3;

            p.setBlue(grayValue);
            p.setGreen(grayValue);
            p.setRed(grayValue);

            imageArr[row][col] = p;
        }
    }

}

public static void shrink (Pixel[][] imageArr)
{
    int height = imageArr.length/2;
    int width = imageArr[0].length/2;

1 个答案:

答案 0 :(得分:1)

不,您不需要自己编写所有代码:)

public BufferedImage shrink(File source, int w, int h) {
    int dstWidth = w / 2;
    int dstHeight = h / 2;
    BufferedImage originalImage = ImageIO.read(source);
    BufferedImage resizedImage = new BufferedImage(
                                       dstWidth
                                     , dstHeight
                                     , BufferedImage.TYPE_INT_ARGB);
    Graphics2D g = resizedImage.createGraphics();
    g.drawImage(originalImage, 0, 0, dstWidth, dstHeight, null);
    g.dispose();
    return resizedImage;
}