Enregistrer les images les Dimensions (largeur et hauteur) en forme de Trombone?
Toute forme de Trombone assistants là de savoir si vous pouvez lorsque vous utilisez un Trombone pour enregistrer une image, également enregistrer les dimensions de l'image (largeur et hauteur) dans les 2 champs supplémentaires? Comment voulez-vous obtenir ces données pendant le Trombone, le processus de chargement?
Vous devez vous connecter pour publier un commentaire.
Juste par souci d'exhaustivité, même si les réponses précédentes montrent déjà assez bonnes suggestions.
Vous pouvez utiliser un Trombone, des gestionnaires d'événements au lieu de les Rails de rappels. Dans ce cas, la taille sera recalculé uniquement lorsque l'image change. (Si vous utilisez S3 pour le stockage, ce qui peut économiser un peu de temps)
Image n'avez même pas à être téléchargé à partir de S3 (ou de lire à partir d'un fichier), trombone fournit gestionnaire d'événement lui-même.
Voir Événements section de le fichier readme pour plus de détails.
Lorsqu'un utilisateur télécharge une image avec un trombone, je le traiter avec le modèle suivant:
La
get_geometry
appels de fonction ImageMagickidentify
pour trouver la géométrie de votre origine et de redimensionner les images.Je cache les résultats dans un champ de base de données. Par exemple si j'ai téléchargé une image qui a été
1024x768
mon cache champs contient:Vous aurez besoin de besoin "RMagick'
Pas sûr de la façon d'avoir de travail avec les rappels, cependant. Peut-être quelque chose comme:
À l'aide de Rails 4-je utiliser les suivants pour enregistrer l'image dimensions:
Puis dans votre modèle:
Cela permettra d'économiser votre dimensions de sérialisé champ appelé
image_dimensions
ainsi que l'ajout de quelques autres méthodesimage_width
,image_height
etimage_dimensions_max(width, height)
J'ai trouvé la solution la plus simple: Fastimage gem (lien)
Il est rapide et très, très simple.
Exemple:
Le trombone-meta gemme caches les dimensions de l'image et taille du fichier pour tous les styles d'images. Son référencé dans la forme de Trombone README. Le trombone-meta repo est ici: https://github.com/teeparham/paperclip-meta