Подтвердить что ты не робот

Как сообщить paperclip не сохранять исходный файл?

Как сообщить Паперклипу не сохранять исходный файл при его загрузке? Или еще лучше, чтобы сохранить масштабированную версию файла в качестве оригинала?

4b9b3361

Ответ 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]