Je cherche un moyen de déterminer l'orientation de l'image de préférence avec du papier, mais est-ce même possible ou dois-je avoir besoin d'utilisateur Rmagick ou une autre bibliothèque d'images pour cela? P>
Scénario d'affaire: Lorsqu'un utilisateur télécharge une image, je veux vérifier l'orientation / la taille / dimensions pour déterminer si l'image est en portrait / paysage ou carré et enregistrez cet attribut sur le modèle. P>
3 Réponses :
Quand je prends une photo avec mon appareil photo, les dimensions de l'image sont les mêmes, peu importe si la photo est un paysage ou un portrait. Cependant, ma caméra est assez intelligente pour faire pivoter l'image pour moi! Comme c'est pensif! La façon dont ce travail est qui est utilise quelque chose appelé Avec PaperClip Vous pouvez configurer des rappels, plus particulièrement ce que vous voudrez faire, c'est avoir un rappel sur J'espère que cela vous aidera! P> eXif Data code> qui est des métadonnées placées sur l'image par la caméra. Il comprend des choses comme: le type de caméra, lorsque la photo a été prise, Orientation B> etc ... p>
avant_post_process code> qui vérifie l'orientation de l'image en lisant les données exif à l'aide d'une bibliothèque (vous pouvez. Trouvez une liste ICI: http: //blog.simplificator. COM / 2008/01/14 / RUBY-and-EXIF-DATA / ), puis en rotation de l'image dans le sens des aiguilles d'une montre ou dans le sens inverse des aiguilles d'une montre 90 degrés (vous ne saurez pas de quelle manière ils ont tourné la caméra quand ils ont pris la photo) . p>
J'ai examiné cela et c'est aussi une excellente solution, bien que cette fois, les téléchargements d'image soient par les utilisateurs et je ne fais pas vraiment confiance à leur capacité à télécharger des images correctement.
Merci pour la réponse Jonnii.
Bien que j'ai trouvé ce que je cherchais dans le module PaperClip :: Géométrie. P>
Ceci a travaillé Trouver: P>
class Image < ActiveRecord::Base after_save :set_orientation has_attached_file :data, :styles => { :large => "685x", :thumb => "100x100#" } validates_attachment_content_type :data, :content_type => ['image/jpeg', 'image/pjpeg'], :message => "has to be in jpeg format" private def set_orientation self.orientation = Paperclip::Geometry.from_file(self.data.to_file).horizontal? ? 'horizontal' : 'vertical' end end
Voici ce que je fais généralement dans mes modèles d'image. Peut-être que cela aidera:
Le rappel est-il appelé après_post_process code>?
C'est après_atachment_post_process code> Ici car PaperClip vous permet de déclarer des processeurs post-post pour chaque pièce jointe dans votre modèle. Vous le faites en déclarant
après_attachment-name_post_process code>. Donc, si sa pièce jointe a été appelée code> code>, son processeur postal serait
après_media_post_process code>.
Vous voulez probablement utiliser source_file_options: {tout: '-Auto-orient'} code> au lieu de
convert_options: code> car il oriente avant de générer les différents styles et produira l'image attendue tailles dans vos styles.