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

标签 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;

最佳答案

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

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

关于java - 在java中将图像缩小到其高度和宽度的一半,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33539759/

相关文章:

java - Java 中的字符串被截断

html - 仅使用 css 将高度设置为宽度的比率

c# - 如何从 jpg 图像中删除嵌入的颜色配置文件?

java - 如何使用 java 从 RGB 像素值创建有效图像

java - 如何通过 ThreadId 检测线程结束?

java - 为什么 okhttp3 client.execute 不起作用?

javascript - 根据 HTML/JavaScript 中的单选按钮选择更改图像

python - 使用 scikit-image 搜索所有模板

java - 代码重复与可读性

简单 gui 中的 java.awt.Container.checkNotAWindow 错误