gpt4 book ai didi

ruby-on-rails - 载波 :convert 出现问题

转载 作者:行者123 更新时间:2023-12-03 20:45:16 27 4
gpt4 key购买 nike

我想要 Carrierwave生成图像的几个版本,一个是 png 格式,一个是 jpeg 格式,但我似乎无法让它工作。我意识到这里和其他地方都提出了几个类似的问题,但我未能找到解决方案。粗略地说,这就是我所拥有的:

class MyUploader < CarrierWave::Uploader::Base
include CarrierWave::RMagick

version :jpeg do
process :convert => 'jpg'
# more procesors
process :processed => :jpg
end

version :png do
process :convert => 'png'
# more processors
process :processed => :png
end

def store_path(for_file = filename)
if version_name != :png
return "#{version_name}.jpg"
else
return "#{version_name}.png"
end
end

def filename
filename = if version_name != :png
super != nil ? super.split('.').first + '.jpg' : super
else
super != nil ? super.split('.').first + '.png' : super
end
end

end

因此,无论我传入哪种图像格式,都会生成两个文件:一个名为 jpg.jpg ,还有一个名为 png.png . jpg.jpg确实总是一个 JPEG 文件(通过 Unix 的 file 命令验证),但 png.png只有当且仅当我最初传入 png 格式的文件(传入 jpeg 会导致 jpeg 格式的文件)时,它才是真正的 PNG 格式文件!

想法?

这可能没用,但我发现 convert Carrierwave 中的方法本身可疑: convert(some_format)来电 manipulate!(:format => some_format) , 进而调用 (some_image_object).write("#{some_format}:#{current_path}") .现在如果传入的原始图像是bla.format(格式= jpg、png等), current_path具有 .format 的扩展名(通过 manipulate! 上的猴子补丁测试)。以及图像格式转换的工作方式 RMagick是通过调用 write带有具有所需扩展名的参数。那么为什么上面的jpeg转换实际上会发生呢?如果是这样,为什么 png 转换会失败?

另外,如果有用的话,我在 Rails 3.0.9 和 Carrierwave 0.5.6 上

谢谢!

最佳答案

所以我不确定为什么会这样,但事实证明问题出在 # more processors我隐藏在上面的 png 版本的一部分。从版本中省略它们会导致任何输入类型的真正 PNG 文件。这些处理器调用 manipulate!并做一些事情。解决方法是调用 manipulate!(:format => 'png')反而。耶。

关于ruby-on-rails - 载波 :convert 出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7997134/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com