Uso el botox Django + PIL + Amazon en una aplicación web. El usuario envía la imagen y la aplicación web la muestra. En su mayoría, las personas envían una foto tomada desde su teléfono celular. A veces, la imagen se muestra en la orientación incorrecta. ¿Hay alguna manera de utilizar PIL o ImageField de Django para obtener la metainformación de la imagen y usarla para rotar la imagen a la orientación correcta?Uso de PIL para girar automáticamente la imagen tomada con el teléfono celular y el acelerador
7
A
Respuesta
3
Pruebe esto para obtener la información EXIF. N.B .: el método _getexif()
pertenece al plugin JPEG. No existirá en otros tipos de imágenes.
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]
Para una imagen al azar que he encontrado en mi disco duro, esto produce:
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
Es el valor Orientation
que desea. Su significado se puede encontrar, p. en el exif orientation page.
Los datos brutos exif están disponibles como una cadena desde Image.info['exif']
. La rotación se puede realizar con el método rotate()
.
No conozco un método para cambiar los datos EXIF utilizando PIL, salvo cambiar los datos sin formato.
3
estoy usando django-imagekit para el procesamiento de imágenes a continuación, utilizando 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}
)
Cuestiones relacionadas
- 1. Lectura de código de barras utilizando una imagen tomada con la cámara del teléfono móvil
- 2. Validar Sudáfrica Número de teléfono celular
- 3. Girar cara en la imagen
- 4. CPU de acelerador Uso de la aplicación
- 5. Girar imagen * sin * cambiar el tamaño
- 6. Girar la imagen junto con el toque para fijar el punto en Android
- 7. ¿Existe un firmware de código abierto para cualquier teléfono celular de gama baja (teléfono no inteligente)?
- 8. PIL Image.resize() no cambiar el tamaño de la imagen
- 9. Segmentación celular y recuento de fluorescencia en Python
- 10. ¿Cómo puedo encontrar la orientación de una imagen tomada con Intent MediaStore.ACTION_IMAGE_CAPTURE?
- 11. Copiando región de imagen triangular con PIL
- 12. Girar la imagen en el centro no va suave (Monodroid)
- 13. Girar imagen matemáticas (C#)
- 14. PIL cómo escalar el tamaño del texto en relación con el tamaño de la imagen
- 15. Obtener imagen Uri + miniatura de la imagen tomada con la cámara en Android
- 16. Girar imagen en android
- 17. Girar imagen en UIImageView
- 18. Cómo establecer la imagen de fondo para la aplicación de iphone en el teléfono
- 19. PIL: Miniatura y terminar con una imagen cuadrada
- 20. ¿Manera cruzada del navegador para girar la imagen usando CSS?
- 21. Copia de Python en el objeto de imagen PIL
- 22. Girar un pivote de imagen en el centro - Android
- 23. PIL para llenar el espacio vacío de imagen con colores cercanos (aka inpainting)
- 24. Cómo reducir el tamaño del archivo de imagen usando PIL
- 25. NumPy, PIL agregando una imagen
- 26. Cómo obtener el tamaño de imagen (bytes) usando PIL
- 27. Imagen numpy - girar la matriz 270 grados
- 28. Girar una imagen en java
- 29. Obtener el RGB de píxel con PIL
- 30. Problemas con Snow Leopard, Django y PIL
Heres un hilo que a lo mejor le puede ayudar a: http: //stackoverflow.com/questions/1606587/how-to-use-pil- para cambiar el tamaño-y-aplicar-rotación-exif-información-al-archivo – Jingo
Esto podría ayudarlo http://stackoverflow.com/questions/4228530/pil-thumbnail-is-rotating-my-image – Rakesh