Ruby on rails Rails rmagick-转换后的图像在';调整#u至#u适合';应用

Ruby on rails Rails rmagick-转换后的图像在';调整#u至#u适合';应用,ruby-on-rails,rmagick,Ruby On Rails,Rmagick,我有一张从pdf文件中读取并转换为jpg的图像。它工作得很好,直到我应用“resize_to_fit”——结果是一个黑色矩形(指定大小) 替代: pdf.first.change_geometry!('600x600') { |cols, rows, img| img.resize!(cols, rows) } 。。。因为调整大小没有任何区别,也不会更改质量或密度,也不会忽略颜色空间和隔行设置 因为我有一个全尺寸的好图像(大部分是白色图像),我不明白为什么“调整大小”或“改变几何体”会输出

我有一张从pdf文件中读取并转换为jpg的图像。它工作得很好,直到我应用“resize_to_fit”——结果是一个黑色矩形(指定大小)

替代:

pdf.first.change_geometry!('600x600') { |cols, rows, img|
  img.resize!(cols, rows)
}
。。。因为调整大小没有任何区别,也不会更改质量或密度,也不会忽略颜色空间和隔行设置

因为我有一个全尺寸的好图像(大部分是白色图像),我不明白为什么“调整大小”或“改变几何体”会输出纯黑色

想法


几十次随机实验后,我发现唯一不输出黑色矩形的大小转换是:

pdf.first.sample!(0.25)
当然,限制是我必须有一个一致的输入大小才能工作,因为另一个参数集(x和y)会改变纵横比

此外,无论在输入端或输出端应用何种设置,“sample”产生的质量都很糟糕

我需要一种方法来调整大小,使之适合正常工作。我遵循文档和示例,因此结果毫无意义。我真的希望经常使用rmagick的人,并且熟悉它的哪些部分没有损坏,或者我做错了什么,能够提供帮助。谢谢


来自@bumpy的答案就是解决方案。我现在使用Carrierwave以不同的方式进行测试,但我重新编写了代码并进行了a:B测试;线路

pdf.first.alpha(Magick::DeactivateAlphaChannel)

。。。作品请注意,Carrierwave在没有任何特殊设置的情况下正确地进行转换,并且具有良好的质量结果(与此解决方案相同)。我猜这是默认的jpg格式。有可能你的PDF文件有一个透明的背景,这就是问题的根源。尝试在调整大小之前使用移除alpha通道

pdf.first.alpha(Magick::DeactivateAlphaChannel)
pdf.first.resize_to_fit!("600")

您的PDF文件可能有一个透明的背景,这是导致问题的原因。尝试在调整大小之前使用移除alpha通道

pdf.first.alpha(Magick::DeactivateAlphaChannel)
pdf.first.resize_to_fit!("600")

您的PDF文件可能有一个透明的背景,这是导致问题的原因。尝试在调整大小之前使用移除alpha通道

pdf.first.alpha(Magick::DeactivateAlphaChannel)
pdf.first.resize_to_fit!("600")

您的PDF文件可能有一个透明的背景,这是导致问题的原因。尝试在调整大小之前使用移除alpha通道

pdf.first.alpha(Magick::DeactivateAlphaChannel)
pdf.first.resize_to_fit!("600")

我可以链接到你正在使用的PDF吗?这里有一个我尝试过的:我的答案解决了你的问题吗?我可以链接到你正在使用的PDF吗?这里有一个我尝试过的:我的答案解决了你的问题吗?我可以链接到你正在使用的PDF吗?这里有一个我尝试过的:我的答案解决了你的问题吗?我可以链接到你正在使用的PDF吗?这里我试过一个:我的回答解决了你的问题吗?