在 Java 中更改 BMP 图像的 DPI

Change DPI of BMP image in Java

我需要使用 java 更改图像,因此我为此使用 BufferedImage。更改图像后,我需要将其保存为 600 DPI 的 BMP 格式;但是,BufferedImage 默认 DPI 为 72。

我试过直接在图像上设置 DPI,但没有任何改变。 我引用了 this Wikipedia article 来更改 BMP 格式的 DPI 数据。

这是我用于更改 DPI 值的代码。

public static void main(String[] args) throws Exception {
    File output = new File("/Users/alex/Desktop/out.bmp");

    try (RandomAccessFile f = new RandomAccessFile(output, "rw")) {
        f.seek(38);
        f.write(1);
        f.seek(42);
        f.write(1);
    }
}

BMP代表位图,表示每个像素值都存储在一个网格中。无需任何特殊解压缩或插值即可简单地读入此网格。

BMP 图像不会根据图像元数据中指示的 DPI 值而改变,但当值准确时它会很好。相反,DPI 可以帮助任何查看图像的人了解 DPI 是什么。在图像中更改它是徒劳的,因为它实际上不会改变图像的分辨率。

分辨率取决于图像的大小(您在图像中塞入了多少像素)。

Here 是一篇关于位图的好文章。