Sto utilizzando Django + PIL + Amazon boto in un'applicazione web. L'utente invia l'immagine e la webapp la visualizza. Per lo più, le persone inviano foto scattate dal proprio telefono cellulare. A volte, l'immagine viene visualizzata con l'orientamento sbagliato. C'è un modo per usare ImageField di PIL o Django per ottenere le meta informazioni dall'immagine e usarle per ruotare l'immagine con l'orientamento corretto?Utilizzo di PIL per ruotare automaticamente l'immagine scattata con il telefono cellulare e l'accellerometro
7
A
risposta
3
Prova questo per ottenere le informazioni EXIF. N.B .: il metodo _getexif()
appartiene al plugin JPEG. Non esisterà in altri tipi di immagini.
import Image
from PIL.ExifTags import TAGS
im = Image.open('a-jpeg-file.jpg')
exifdict = im._getexif()
if len(exifdict):
for k in exifdict.keys():
if k in TAGS.keys():
print TAGS[k], exifdict[k]
else:
print k, exifdict[k]
Per un'immagine casuale che ho trovato sul mio hard disk, questo prodotto:
ExifVersion 0221
ComponentsConfiguration
ApertureValue (4312, 1707)
DateTimeOriginal 2012:07:19 17:33:37
DateTimeDigitized 2012:07:19 17:33:37
41989 35
FlashPixVersion 0100
MeteringMode 5
Flash 32
FocalLength (107, 25)
41986 0
Make Apple
Model iPad
Orientation 1
YCbCrPositioning 1
SubjectLocation (1295, 967, 699, 696)
SensingMethod 2
XResolution (72, 1)
YResolution (72, 1)
ExposureTime (1, 60)
ExposureProgram 2
ColorSpace 1
41990 0
ISOSpeedRatings 80
ResolutionUnit 2
41987 0
FNumber (12, 5)
Software 5.1.1
DateTime 2012:07:19 17:33:37
41994 0
ExifImageWidth 2592
ExifImageHeight 1936
ExifOffset 188
è il valore Orientation
che si desidera. Il suo significato può essere trovato per es. su exif orientation page.
I dati exif grezzi sono disponibili come stringa da Image.info['exif']
. La rotazione può essere eseguita con il metodo rotate()
.
Non sono a conoscenza di un metodo per modificare i dati EXIF utilizzando PIL, oltre a modificare i dati non elaborati.
3
sto usando django-imagekit per l'elaborazione di immagini quindi utilizzando imagekit.processors.Transpose
from imagekit.models import ImageSpecField
from imagekit.processors import ResizeToFill, Transpose, SmartResize
class UserProfile(models.Model):
avatar = models.ImageField(upload_to='upload/avatars', max_length=255, blank=True, null=True)
avatar_thumbnail = ImageSpecField(
source='avatar',
processors = [Transpose(),SmartResize(200, 200)],
format = 'JPEG',
options = {'quality': 75}
)
Problemi correlati
- 1. Lettura di codici a barre utilizzando la foto scattata con la fotocamera del telefono cellulare
- 2. Codifica tramite telefono cellulare
- 3. ASP.NET MVC 3 Annotazione dati per telefono cellulare e numeri di telefono (Modificato)
- 4. Jquery consente di tenere e trascinare il cellulare per il telefono
- 5. Ritagliare automaticamente un'immagine con python/PIL
- 6. Scanner di codici a barre per telefono cellulare per il sito Web nel modulo
- 7. Chiamare il telefono cellulare tramite il programma C#
- 8. Il telefono cellulare non riconosce le query dei media
- 9. Windows (telefono) 8.1 Fotocamera Utilizzo
- 10. Come monitorare continuamente la posizione di un telefono cellulare Android?
- 11. Ottieni data e ora quando la foto è stata scattata da dati EXIF utilizzando PIL
- 12. Utilizzo di WebKit (compatibile con Safari) in delphi per simulare il cellulare iPhone
- 13. Utilizzo di una matrice per ruotare i singoli rettangoli
- 14. Come impedire allo schermo di ruotare automaticamente su un tablet?
- 15. La foto scattata viene ruotata automaticamente durante il caricamento in IOS 6.0 o iPhone
- 16. Come ottenere i numeri di cellulare se il mio telefono Android ha due SIM?
- 17. Utilizzo di Docker-Compose per far ruotare più istanze di un contenitore con diverse configurazioni
- 18. Ottimizzare .png immagini con PIL
- 19. Problemi con Snow Leopard, Django e PIL
- 20. Il problema con l'installazione di PIL usando virtualenv o buildout
- 21. Utilizzo di python PIL per trasformare un'immagine RGB in un'immagine in bianco e nero
- 22. Come inviare/ricevere messaggi SMS dall'applicazione C#, utilizzando il telefono cellulare Nokia
- 23. come possiamo misurare la distanza tra oggetto e telefono cellulare Android
- 24. Esiste un'API di utilizzo dati cellulare in iOS 7?
- 25. Trascinare il mouse per ruotare e ridimensionare in Java
- 26. Intenzione per i contatti con il numero di telefono
- 27. Come ottenere il formato dell'immagine con PIL?
- 28. Come ruotare il testo SVG con css
- 29. Come fare il primo cellulare con Bourbon Neat Framework
- 30. Rotazione di un'immagine con orientamento specificato nel EXIF utilizzando Python senza PIL compresa la miniatura
Heres un filo che forse può aiutare a: http: //stackoverflow.com/questions/1606587/how-to-use-pil- to-resize-and-apply-rotation-exif-information-to-the-file – Jingo
Questo potrebbe aiutarti http://stackoverflow.com/questions/4228530/pil-thumbnail-is-rotating-my-image – Rakesh