How do I re-set a BMP file's resolution (DPI) indicator?

浪子不回头ぞ 提交于 2019-12-23 17:33:05

问题


I have a BMP tagged as 299 DPI resolution. I'd like to change that to 99 DPI.

Importantly, the DPI marker in a BMP has no structural meaning. An image has a certain width and height in pixels. The displaying application can show the image at any width in inches.

So, the DPI is just a hint.

However, I am dealing with some third-party software which behaves differently depending on this marker, so I need to re-set it.

I will appreciate suggestions on how to do this programmatically in Java, as well as in GUI graphics tools (e.g. Gimp).


回答1:


for the Java part, you can use the img4j library. You have an encoder and a decoder for BMP. The InfoHeader class has a iXpixelsPerM and iYpixelsPerM to set the resolution. You chan check the BMP file format here to have more information.

Moreover, as the library is opensource, you'll be able to check and understand how the code is working and you'll be able to adapt it to fit your needs (if it complies with your licensing model).

(Happy New Year! :)




回答2:


In .Net you can set the DPI property of an image using the SetResolution method of the Bitmap class. Unfortunately I don't know how you can do it in Java. [Update the initial question asked for "how to do this programmatically (especially in Java)", this is why I mentioned the .Net solution.]

And here is how you can change the resolution property in GIMP: http://docs.gimp.org/en/gimp-image-print-size.html
In Paint .Net (free .Net based image editing tool) you would go to Image -> Resize -> Modify the resolution field.



来源:https://stackoverflow.com/questions/4574715/how-do-i-re-set-a-bmp-files-resolution-dpi-indicator

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!