Bilder verschiedener Versionen in Carrierwave erneut verarbeiten
Mit Carrierwave, habe ich 3 Versionen von avatar - ein original, ein small_thumb und ein large_thumb mit den folgenden Zeilen:
process :resize_to_limit => [400, 400]
version :big_thumb do
process :resize_to_limit => [80, 80]
end
version :small_thumb do
process :resize_to_limit => [50, 50]
end
Fügte ich eine zusätzliche Methode in meinem AvatarUploader Klasse:
def reprocess(x,y,w,h)
manipulate! do |img|
img.crop(x.to_i, y.to_i, w.to_i, h.to_i, true)
end
resize_to_limit(180,180)
end
die aufgerufen wird, in meinem Modell, nachdem eine Aktualisierung durchgeführt wird:
attr_accessor :crop_x, :crop_y, :crop_w, :crop_h
after_update :reprocess_image, :if => :cropping?
def cropping?
!crop_x.blank? && !crop_y.blank? && !crop_w.blank? && !crop_h.blank?
end
private
def reprocess_image
image.reprocess(crop_x,crop_y,crop_w,crop_h)
end
Ich habe es geschafft, zuschneiden und Größe ändern, die ursprüngliche version, aber ich kann nicht scheinen, um zu aktualisieren, die 2 miniaturen zusammen mit ihm. Ich habe versucht ein paar verschiedene Techniken, ohne Erfolg.
Irgendwelche Vorschläge?
InformationsquelleAutor der Frage Jonathan Chiu | 2011-02-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen
Sorry, auf den bus. Ich kann nicht erläutern.
InformationsquelleAutor der Antwort Michael Reed
Müssen Sie rufen Sie
image.cache_stored_file!
vor dem Aufrufrecreate_versions!
Es ist komisch, weil die Methode selbst aufruft, wenn die Datei im Cache gespeichert, aber aus irgendeinem Grund klappte es nicht.
So, das wäre so etwas wie:
InformationsquelleAutor der Antwort edgarjs
Diese Anleitung war sehr hilfreich für mich (auch wenn ich nicht verwenden, Nebel):
https://github.com/carrierwaveuploader/carrierwave/wiki/How-to:-Recreate-and-reprocess-your-files-stored-on-fog
Habe ich ein nachbearbeiten Methode auf mein Modell und dann heißt es in der for each-Schleife in meinem rake-task:
Rake:
task :reprocess_photos => :environment do
MyModel.all.each{|mm| mm.reprocess}
end
PS: Rails 4.2
InformationsquelleAutor der Antwort
Habe ich noch nicht versucht, aber vielleicht etwas ähnliches.
InformationsquelleAutor der Antwort Aftab Hussain
überprüfen diese neueste RailsCast:
http://railscasts.com/episodes/182-cropping-images-revised
nach der Beschneidung eine version des Bildes können Sie dann entweder berechnen Sie die zuschneiden-Koordinaten für die anderen Versionen, oder wahrscheinlich einfacher, verkleinern Sie das zugeschnittene Bild mit dem gleichen Seitenverhältnis wie die anderen Versionen des ursprünglichen Bildes
InformationsquelleAutor der Antwort Tilo