Как проверить изображение на основе разрешения при использовании rails + paperclip - PullRequest
2 голосов
/ 28 марта 2011

Заголовок jpeg содержит ширину и высоту в пикселях, которые я хочу проверить, используя эти значения (макс. 19200x19200). Могу ли я сделать это с помощью скрепки?

Или, может быть, я смогу проверить его при загрузке файла. Я использую. Uploadify

Ответы [ 2 ]

2 голосов
/ 28 марта 2011

Если вас интересуют только JPEG, вы можете прочитать данные EXIF ​​примерно так: http://www.nihilogic.dk/labs/exifjquery/ Вы можете вызвать это с помощью одного из обратных вызовов загрузки (например, onselect): http://www.uploadify.com/documentation/events/onselect/

В противном случае, если вы не можете прочитать EXIF, вам нужно загрузить его, обработать, а если его больше, чем нужно, просто выбросьте его и отправьте обратно ошибку.

Из readme скрепки (https://github.com/thoughtbot/paperclip/blob/master/README.md):

До и после постобработки шаг, скрепка перезванивает модель с несколькими обратными вызовами, позволяющая модель, чтобы изменить или отменить этап обработки. Обратные вызовы 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] }
0 голосов
/ 28 марта 2011

Информация о разрешении отсутствует в полном стандартном файле JPEG.Предполагается, что он будет отображаться с разрешением 72 dpi, так как JPEG сделан для Интернета.См. http://en.wikipedia.org/wiki/JPEG_File_Interchange_Format#Resolution_and_aspect_ratio

Но большинство графических программ взламывают данные EXIF ​​в JPEG (который не соответствует стандарту и более или менее является собственностью компании Adobe).Вы можете попытаться получить разрешение из этих данных EXIF, оно сохраняется там как x-Resolution и y-Resolution.Камень rMagick будет хорошим началом.

...