使用以下的方法测试成功了。
version :thumb, :if => :thumbable? do
process :efficient_conversion => [640, 960], :if => :pdf?
process thumbnail: [{format: 'png', quality: 7, size:112, strip: false, square:false, logger: Rails.logger}], :if => :video?
def full_filename for_file
png_name for_file, version_name
end
end
version :large, :if => :thumbable? do
process :efficient_conversion => [640, 960], :if => :pdf?
process thumbnail: [{format: 'png', quality: 7, size:800, strip: false, square:false, logger: Rails.logger}], :if => :video?
def full_filename for_file
png_name for_file, version_name
end
end
def thumbable?(file)
pdf?(file) || video?(file)
end
protected
def video?(new_file)
new_file.content_type.end_with? '/mp4'
end
def pdf?(new_file)
new_file.content_type.end_with? '/pdf'
end
==== 在 carriwave 的 uploader 里面针对不同的文件类型,调用不同的截图方法,这个 if 应该怎么写啊?
按照下面这种方法写的话,如果输入的是 pdf 的话,不会执行,本地测试截图不成功。
能帮忙解释一下,version :thumb, :if => :video?
这样的语法的全部意思吗?或者类似正常的 ruby 写法。
谢谢。
version :thumb, :if => :video? do
process thumbnail: [{format: 'png', quality: 7, size:112, strip: false, square:false, logger: Rails.logger}]
def full_filename for_file
png_name for_file, version_name
end
end
version :large, :if => :video? do
process thumbnail: [{format: 'png', quality: 7, size:800, strip: false, square:false, logger: Rails.logger}]
def full_filename for_file
png_name for_file, version_name
end
end
version :thumb, :if => :pdf? do
process :efficient_conversion => [640, 960]
def full_filename for_file
png_name for_file, version_name
end
end
version :large, :if => :pdf? do
process :efficient_conversion => [640, 960]
def full_filename for_file
png_name for_file, version_name
end
end