如何在使用rails + paperclip时根据分辨率验证图像

时间:2011-03-28 10:57:26

标签: ruby-on-rails paperclip uploadify

jpeg标题包含我想要使用这些值验证的宽度和高度(以像素为单位)(最大19200x19200)我可以用回形针做到吗?

或者我可以在上传文件时验证它。我正在使用。 uploadify

2 个答案:

答案 0 :(得分:2)

如果它只是你关注的JPEG,你可以用以下内容读取EXIF数据:http://www.nihilogic.dk/labs/exifjquery/你可以在其中一个uploadify回调中触发它(例如:onselect):http://www.uploadify.com/documentation/events/onselect/ < / p>

否则,如果您无法读取EXIF,则需要上传,处理它,如果超过您的需要,请将其丢弃并发回错误。

来自回形针自述文件(https://github.com/thoughtbot/paperclip/blob/master/README.md):

  

后处理之前和之后   一步,Paperclip回电话给   有一些回调的模型,允许   要更改或取消的模型   处理步骤。回调是   before_post_process和   after_post_process

无论如何,您可以使用回形针来归档尺寸:https://github.com/thoughtbot/paperclip/blob/master/lib/paperclip/geometry.rb#L14

dimensions = Paperclip::Geometry.from_file(original_file)

如果文件太大,Paperclip也会为您调整大小,因此用户上传大文件无关紧要:

has_attached_file :avatar, :styles => { :original => ["19200x19200>", :jpg] }

答案 1 :(得分:0)

完整的标准JPEG文件中没有可用的分辨率信息。它意味着以72dpi显示,因为JPEG是为网络制作的。见http://en.wikipedia.org/wiki/JPEG_File_Interchange_Format#Resolution_and_aspect_ratio

但是大多数图形程序都将EXIF数据破解成JPEG(这不符合标准,并且或多或少是Adobe的专有技术)。您可以尝试从此EXIF数据中提取分辨率,并将其保存为x-Resolutiony-Resolution。 rMagick宝石将是一个良好的开端。