我正在使用Paperclip来处理项目中的所有文件上传。我的问题是一些文件是图像,一些图像使用CMYK作为颜色空间,这在某些浏览器中是个问题,但特别是在某些Android版本上(例如Android 4.2无法处理带有CMYK颜色空间的jpgs)
我通过在回形针中使用convert_options并删除CMYK并添加RGB来解决这个问题。我的代码看起来像这样:
has_attached_file :media,
:storage => :azure,
:styles => lambda { |a|
if a.instance.is_image?
{
:thumb => {geometry: "75x75#", convert_options: '-strip -colorspace RGB' },
:preview => {geometry: "300x300#",convert_options: '-strip -colorspace RGB' },
:original => {convert_options: '-strip -colorspace RGB'}
}
else ....
工作正常,但是当运行convert_options时,颜色会发生变化。所以,我只想在检测到当前颜色空间是CMYK时运行convert_options,如果它已经是RGB则不运行它,它对已经是RGB的图像没有任何作用,只是改变原始颜色。 我正在寻找类似的东西:
has_attached_file :media,
:storage => :azure,
:styles => lambda { |a|
if a.instance.is_image?
if a.instance.colorspace_is?("CMYK")
{
:thumb => {geometry: "75x75#", convert_options: '-strip -colorspace RGB' },
:preview => {geometry: "300x300#",convert_options: '-strip -colorspace RGB' },
:original => {convert_options: '-strip -colorspace RGB'}
else
{
:thumb => "75x75#",
:preview => "300x300#"}
}
end
else ....
这可能吗?
答案 0 :(得分:0)
我找到了解决方案!
在lib / paperclip中,我在
中添加了带有此代码的colorspace.rb<button type="button" class="btn btn-circle btn-default">4</button>
在我的模型中,我将处理器设置为色彩空间而不是缩略图。效果很好