Java 如何重新设置BMP文件';s分辨率(DPI)指示器?

Java 如何重新设置BMP文件';s分辨率(DPI)指示器?,java,image,graphics,resolution,bmp,Java,Image,Graphics,Resolution,Bmp,我有一个BMP标记为299 DPI分辨率。我想把它改成99 DPI 重要的是,BMP中的DPI标记没有结构意义。图像具有一定的宽度和高度(以像素为单位)。显示应用程序可以以英寸为单位显示任意宽度的图像 因此,新闻部只是一个暗示 但是,我正在处理一些第三方软件,这些软件的行为因该标记而异,因此我需要重新设置它 我将非常感谢您对如何在Java以及GUI图形工具(例如Gimp)中以编程方式执行此操作的建议。在.Net中,您可以使用位图类的SetResolution方法设置图像的DPI属性。不幸的是,我

我有一个BMP标记为299 DPI分辨率。我想把它改成99 DPI

重要的是,BMP中的DPI标记没有结构意义。图像具有一定的宽度和高度(以像素为单位)。显示应用程序可以以英寸为单位显示任意宽度的图像

因此,新闻部只是一个暗示

但是,我正在处理一些第三方软件,这些软件的行为因该标记而异,因此我需要重新设置它


我将非常感谢您对如何在Java以及GUI图形工具(例如Gimp)中以编程方式执行此操作的建议。

在.Net中,您可以使用位图类的SetResolution方法设置图像的DPI属性。不幸的是,我不知道如何用Java实现。[Update最初的问题是“如何以编程方式(尤其是在Java中)执行此操作”,这就是我提到.Net解决方案的原因。]

下面是如何更改GIMP中的resolution属性:

在Paint.Net(基于.Net的免费图像编辑工具)中,您可以转到图像->调整大小->修改分辨率字段。

对于Java部件,您可以使用该库。 您有BMP的编码器和解码器。该类有一个IXPixelsemm和一个IYPixelsemm来设置分辨率。您可以检查BMP文件格式以了解更多信息

此外,由于库是开源的,您将能够检查和理解代码是如何工作的,并且您将能够调整它以满足您的需要(如果它符合您的许可模型)


(新年快乐!:)

谢谢。我认为执照不允许这样做。这可以通过Java2D或其他JDK API实现吗?使用已安装的库也会更容易。您好,由于BMP文件格式非常简单(请查看我答案中的链接),您可以轻松编写一个方法来更改文件头中的这两个特定值。我想这是最简单的方法。我认为Java2D不允许您这样做,但我可能错了。@LudoMC如何设置IXPixelsum?我尝试创建一个InfoHeader()并设置它。然后重新分配到图像。但是没有运气。有什么建议吗?