繁体   English   中英

用Java将图像缩小到其高度和宽度的一半

[英]Shrink an image to half its height and width in java

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

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;

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

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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM