Tengo un JPEG imagen, que fue tomada en un iphone. En mi PC de escritorio (Visualizador de Fotos de Windows, Google Chrome, etc) la orientación es incorrecta.
Estoy trabajando en una ASP.NET MVC 3 aplicación web donde tengo que subir fotos (en la actualidad el uso de plupload).
Tengo un poco de código del lado del servidor para procesar imágenes, incluyendo la lectura de los datos EXIF.
He intentado leer el PropertyTagOrientation
campo en los metadatos EXIF (utilizando GDI – Image.PropertyItems
), pero el campo no está presente.
Así que o algunos iphone específico meta de datos, o alguna otra meta datos.
He utilizado otra herramienta como Aurigma Photo Uploader, y se lee con la meta de datos correctamente y gira la imagen. ¿Cómo hace esto?
¿Alguien sabe qué otras JPEG meta de datos podría contener la información necesaria para saber que necesita ser girado, que es utilizado por Aurigma?
Este es el código que estoy usando para leer los datos EXIF:
var image = Image.FromStream(fileStream);
foreach (var prop in image.PropertyItems)
{
if (prop.Id == 112 || prop.Id == 5029)
{
//do my rotate code - e.g "RotateFlip"
//Never get's in here - can't find these properties.
}
}
Alguna idea?
Parece que se olvida de que la orientación de los valores de id buscó están en hexadecimal. Donde se utiliza 112, usted debe haber utilizado 0x112.
Este artículo explica cómo Windows ballsed-hasta la orientación de la entrega, y este parece muy relevante de lo que están haciendo.
0x0112
trabajado. Gracias!Aquí es un fragmento de abordar el 8 de orientación de valores.
Primero un par de notas:
El EXIF id 0 x 0112 es para la Orientación. Este es un útil EXIF identificador de referencia http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/EXIF.html
0 x 0112 es el hexadecimal equivalente de 274. El tipo de datos de un
PropertyItem.Id
es unint
, significado 274 es lo que es útil aquí.Además, 5029 probable que se suponía iba a ser 0x5029 o 20521 la cual se correlaciona con ThumbnailOrientation, aunque no es probable que lo que se desea aquí.
Oriente De Imagen:
Nota:
img
es unSystem.Drawing.Image
o hereda de ella, comoSystem.Drawing.Bitmap
.De este post parece que usted necesita para comprobar el ID de 274
274
, pero la orientación de valor es1
. Por lo que no hace el flip.He combinado las preguntas y comentarios y se le ocurrió esto:
Publicar aquí por si alguien tiene el mismo problema. He tenido problemas en la producción de la lectura de la orientación mediante el PMA y el GDI. Lo único que funcionó fue el uso de: https://github.com/dlemstra/Magick.NET
El código es bastante simple: