Как сообщить Паперклипу не сохранять исходный файл при его загрузке? Или еще лучше, чтобы сохранить масштабированную версию файла в качестве оригинала?
Как сообщить paperclip не сохранять исходный файл?
Ответ 1
Я считаю, что вы можете просто определить стиль для: original, чтобы paperclip заменил оригинал на этот размер.
:styles => { :original => '300x168>', :cropped_thumb => {:geometry => "115x70#", :jcrop => true}, ...}
Ответ 2
Решение Cris G может быть приятным в самых простых случаях, но оно имеет ограничения. считайте, что: style: original Paperclip обрабатывает в первую очередь другие, поэтому после этого обновлено: исходное изображение (намного меньше сейчас) станет источником последующей обработки. Следовательно, вы вынуждены придерживаться: оригинального стиля с наилучшим разрешением. Ситуация ухудшается, так как вам нужно обрезать изображения процессором: это та ситуация, когда вам действительно нужно подлинное оригинальное качество. )
Итак, я бы порекомендовал вам несколько необработанных (нужно выяснить, как получить все вложения модели):
after_save :reprocess_attach
private
def reprocess_attach
if self.<atch_name>.present? && Pathname.new(self.<atch_name>.path).exist?
self.<atch_name>.save
File.unlink(self.<atch_name>.path)
end
end
ему не важно, какая обработка была за сценой. Он просто убивает оригинальный файл)
Ответ 3
Паперклип всегда сохраняет оригинал по умолчанию, но я верю, что если вы просто удалите его из своей миграции, он не попытается его сохранить.
Я сохраняю масштабированный оригинал на своей модели, чтобы пользователи могли редактировать свое изображение позже. Моя модель выглядит так:
:styles => { :cropped_thumb => {:geometry => "115x70#", :jcrop => true}, :resized_thumb => {:geometry => "115x70>"}, :deal => {:geometry => "64x56#"},
:cropped_large => {:geometry => "#{PHOTO_IMAGE_WIDTH}x#{PHOTO_IMAGE_HEIGHT}#", :jcrop => true},
:resized_large => {:geometry => "#{PHOTO_IMAGE_WIDTH}x#{PHOTO_IMAGE_HEIGHT}>"},
:orig => '300x168>', #this is the scaled original that I call later
:cropped_orig => {:geometry => '300x168#', :jcrop => true},
:resized_orig => {:geometry => '300x168>'} },
:processors => [:jcropper]