0

Ich hatte einen normalen Datei-Upload, den ich jetzt auf Cloudinary umgestellt habe.'auto_orient' mit Cloudinary-Upload verarbeiten

Beim Upload habe ich die folgende Orientierung Störungen zu verhindern, wenn Bilder von einem mobilen Gerät hochladen (siehe exif image rotation issue using carrierwave and rmagick to upload to s3 für weitere Details):

process :rotate 
process :store_dimensions 

def rotate 
    manipulate! do |image| 
    image.tap(&:auto_orient) 
    end 
end 

def store_dimensions 
    # This does not work with cloudinary #18 

    if file && model 
    model.width, model.height = ::MiniMagick::Image.open(file.file)[:dimensions] 
    end 
end 

Weder Rotation noch speichert die Dimensionen arbeiten, da ich cloudinary geschaltet.

Jetzt Cloudinary hat an official tutuorial, die zeigt, wie dies zu tun, aber es funktioniert einfach nicht und andere Leute scheinen das gleiche Problem zu haben, und keiner der zur Verfügung stehenden Optionen für mich gearbeitet:

Antwort

0

ich in der Lage war, es zum Laufen zu bringen unter Verwendung einer Variation der ersten Option:

after_save :update_dimensions 

    def update_dimensions 
    if self.image != nil && self.image.metadata.present? 
     width = self.image.metadata["width"] 
     height = self.image.metadata["height"] 

     self.update_column(:width, width) 
     self.update_column(:height, height) 

    end 
    end 

Wichtige: da wir in einem after_save Rückruf sind hier, ist es entscheidend, update_column so zu nutzen, dass wir in einer Endlos-Schleife keinen weiteren Rückruf auslösen und am Ende.

Fix für die bereitgestellte Lösung:

self.image.present? zurück false aber self.image != nil returend true.