Ruby on rails 如何使用RMagick/ImageMagick更改现有图像的输出分辨率?

Ruby on rails 如何使用RMagick/ImageMagick更改现有图像的输出分辨率?,ruby-on-rails,ruby,imagemagick,rmagick,Ruby On Rails,Ruby,Imagemagick,Rmagick,ImageMagick和RMagick都有“密度”的设置/属性,这就是他们所说的分辨率。我可以给它传递一个值200,当图像被写入文件或blob时,它应该将分辨率设置为200x200 在Rails控制台中,我可以加载图像,然后设置密度,如果我检查它,它会告诉我密度(最初为300x300)现在是200x200,但当我将其写入文件时,分辨率是300x300 我成功更改分辨率的唯一方法是创建一个相同宽度和高度的新图像,然后覆盖原始图像。然而,无论我使用什么设置,这都会扭曲输出(我尝试将原始设置为完全不透

ImageMagick和RMagick都有“密度”的设置/属性,这就是他们所说的分辨率。我可以给它传递一个值200,当图像被写入文件或blob时,它应该将分辨率设置为200x200

在Rails控制台中,我可以加载图像,然后设置密度,如果我检查它,它会告诉我密度(最初为300x300)现在是200x200,但当我将其写入文件时,分辨率是300x300

我成功更改分辨率的唯一方法是创建一个相同宽度和高度的新图像,然后覆盖原始图像。然而,无论我使用什么设置,这都会扭曲输出(我尝试将原始设置为完全不透明,“新”设置为完全透明,甚至使用CopyCompositeOperation,它应该完全替换“新”图像)

我尝试过这样设置密度:

image.density = "200"
像这样

image.write("test.jpg") {self.density="200"}
两者都有

什么都不管用。。。有什么想法吗


说清楚。。。我不想调整图像大小,我想更改打印分辨率。我希望尺寸保持不变(即宽度/高度不应改变)。

这是AWS存储库中ImageMagick版本的问题。删除该版本并从源代码安装使密度设置工作正常。此外,如果希望在Windows应用程序中反映分辨率更改,则需要从图像中删除“8bim”配置文件:

image.profile!("8bim",nil)

这是AWS存储库中ImageMagick版本的一个问题。删除该版本并从源代码安装使密度设置工作正常。此外,如果希望在Windows应用程序中反映分辨率更改,则需要从图像中删除“8bim”配置文件:

image.profile!("8bim",nil)

密度
用于在打印时缩放到真实世界的尺寸,它不影响像素尺寸。看看
resize
->你把它倒过来了。。。我不想调整它的大小。我想更改打印中的真实尺寸。好的,对不起。你的语法
image.write(“test.jpg”){self.density=“200”}
适合我。您可以尝试
image.write(“test.jpg”){self.units=Magick::ResolutionType::PixelsPerInchResolution;self.density=“200”}
-我隐约记得我不久前需要用Perl做类似的事情(这可能是一个版本特定的问题)。为了进行比较,我在Mac OSX 10.8上进行了测试,
ImageMagick 6.8.6-3 2013-08-10 Q16
,RMagick
2.13.2
,尝试了三种不同的密度值,代码的变化(带引号和不带引号),并使用GIMP和苹果的预览应用程序验证了所有情况下每英寸的预期图像像素数。我在Amazon Linux上运行了这个程序,使用的是yum安装的ImageMagick版本,这有点旧。我试图避免手动编译它(因此更新将通过yum显示),但我可能需要自己完成。我已经尝试了通过RMagick和命令行(即convert)所能想到的所有变化(包括您所说的),但它完全忽略了它。我将尝试删除当前版本并手动编译它,看看是否有效。
density
用于在打印时缩放到真实世界的尺寸,它不会影响像素尺寸。看看
resize
->你把它倒过来了。。。我不想调整它的大小。我想更改打印中的真实尺寸。好的,对不起。你的语法
image.write(“test.jpg”){self.density=“200”}
适合我。您可以尝试
image.write(“test.jpg”){self.units=Magick::ResolutionType::PixelsPerInchResolution;self.density=“200”}
-我隐约记得我不久前需要用Perl做类似的事情(这可能是一个版本特定的问题)。为了进行比较,我在Mac OSX 10.8上进行了测试,
ImageMagick 6.8.6-3 2013-08-10 Q16
,RMagick
2.13.2
,尝试了三种不同的密度值,代码的变化(带引号和不带引号),并使用GIMP和苹果的预览应用程序验证了所有情况下每英寸的预期图像像素数。我在Amazon Linux上运行了这个程序,使用的是yum安装的ImageMagick版本,这有点旧。我试图避免手动编译它(因此更新将通过yum显示),但我可能需要自己完成。我已经尝试了通过RMagick和命令行(即convert)所能想到的所有变化(包括您所说的),但它完全忽略了它。我将尝试删除当前版本,并手动编译它,看看是否有效。