Ist es möglich, zu wissen, wenn Sie ein JPEG-Bild wurde gedreht, nur aus dem raw-bytes?
Können Sie sagen, (sagen wir mal mit .NET 4.0, WinForms), wenn Sie ein JPEG-Bild gedreht wird, nur von seiner binären (wie das Ergebnis der File.ReadAllBytes()
)?
UPDATE
Danke Euch allen für Eure Antworten so weit.
Nur ein heads-up für jemand zu lösen versucht, das gleiche problem. Ich wurde betrogen, indem die System.Drawing.Image
Klasse, die Lasten der EXIF-tags, wenn die Initialisierung mit FromFile(...)
aber scheint zu ignorieren, wenn die Initialisierung aus einem stream. Ich war mit dem ExifTagCollection - Bibliothek zum Lesen der EXIF-tags, aber ich denke, die Ergebnisse wären vergleichbar mit jeder anderen lib.
var bytes = (get binary from server)
File.WriteAllBytes(path, bytes);
FUNKTIONIERT:
var image = Image.FromFile(path);
FUNKTIONIERT NICHT: (fehl FileStream
auch)
using (var ms = new MemoryStream(bytes))
{
image = Image.FromStream(ms);
}
Weiter mit:
ExifTagCollection exif = new ExifTagCollection(image);
foreach (ExifTag tag in exif)
{
Console.WriteLine(tag.ToString());
}
gibt es keine tags, wenn das laden aus Streams.
- Hast du ein original-Referenz-Bild?
- Ich bin das hochladen von Bildern aufgenommen mit Handy-Kamera(s) an einen server. Einige von Ihnen ergriffen werden, im hochformat, andere im Querformat. Ich bin daran interessiert zu wissen, ob es möglich ist, diese info server-Seite basiert nur auf der hochgeladenen binäre.
- Sie konnte vergleichen Sie die Breite mit der Höhe ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
http://jpegclub.org/exif_orientation.html details der exif-orientation-flag. Finden, dass, finden Sie die Richtung.
Natürlich gilt dies nur für Bild drehen, indem Sie dieses flag, wie es oft getan wird von den Kameras selbst, einige Bild-Betrachtungs-software, die nicht für die detaillierte Bearbeitung, und einige gerade-aus-der-Datei-manager-Werkzeuge. Es wird nicht funktionieren, wenn jemand geladen wird das Bild in eine mehr Allgemeine Bild-editor, drehte ihn herum, und dann gespeichert.
Edit:
Vs Landschaft Porträt ist anders "gedreht, der von der Bild-Geräte Natürliche Orientierung". Es geht auch einfacher:
Die möglicherweise näher an dem, was Sie wirklich wissen wollen.
Im Falle EXIF-Daten sind nicht verfügbar /nicht zuverlässig, Sie könnte vermuten, dieses zu identifizieren, die ein Bild-format:
Gleiche Einschränkung wie EXIF gilt: eine physikalische Bearbeitung, die drehte sich um das Bild und nicht update/set EXIF-info ist dementsprechend täuschen, dies zu überprüfen.
Wenn Sie wissen, wie zu Lesen, die JPEG-codierte Daten, kann man sich die EXIF-und erhalten die rotation von EXIF. Es wäre hart, wenn die EXIF-Daten nicht verfügbar sind.
Ist es notwendig, Lesen Sie die EXIF zu determite das JPEG-Bild Ausrichtung.
Bitte werfen Sie einen Blick auf die ExifLib - Eine Schnelle Exif-Daten-Extraktor für .NET 2.0+. Es scheint die Bibliothek gibt die Ausrichtung wie angegeben hier.