在Java中更改BMP图像的DPI

时间:2015-08-06 15:49:02

标签: java dpi bmp

我需要使用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);
    }
}

1 个答案:

答案 0 :(得分:2)

BMP代表Bitmap,它表示每个像素值都存储在网格中。只需读入此网格,无需任何特殊的解压缩或插值。

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

分辨率取决于图像的大小(图像中卡住了多少像素)。

Here是关于位图的好文章。