Canon DSLRs scheinen Fotos im Querformat zu speichern und werden exif::orientation
für die Drehung verwendet.
Frage: Wie kann imagemagick verwendet werden, um das Bild unter Verwendung der Exif-Orientierungsdaten in die beabsichtigte Ausrichtung zu speichern, sodass die Exif-Daten nicht mehr in der richtigen Ausrichtung angezeigt werden müssen?
php
imagemagick
exif
Nyxynyx
quelle
quelle
Antworten:
Verwenden Sie dazu die Auto-Orient- Option von ImageMagick
convert
.Oder verwenden
mogrify
Sie es, um es an Ort und Stelle zu tunquelle
mogrify
anstelle von verwenden können,convert
wenn Sie die vorhandene Datei (an Ort und Stelle) ersetzen möchten. Dies ist nützlich, wenn Sie ein vollständiges Verzeichnis erstellen möchten.Der PHP Imagick-Weg wäre, die Bildausrichtung zu testen und das Bild entsprechend zu drehen / zu drehen:
function autorotate(Imagick $image) { switch ($image->getImageOrientation()) { case Imagick::ORIENTATION_TOPLEFT: break; case Imagick::ORIENTATION_TOPRIGHT: $image->flopImage(); break; case Imagick::ORIENTATION_BOTTOMRIGHT: $image->rotateImage("#000", 180); break; case Imagick::ORIENTATION_BOTTOMLEFT: $image->flopImage(); $image->rotateImage("#000", 180); break; case Imagick::ORIENTATION_LEFTTOP: $image->flopImage(); $image->rotateImage("#000", -90); break; case Imagick::ORIENTATION_RIGHTTOP: $image->rotateImage("#000", 90); break; case Imagick::ORIENTATION_RIGHTBOTTOM: $image->flopImage(); $image->rotateImage("#000", 90); break; case Imagick::ORIENTATION_LEFTBOTTOM: $image->rotateImage("#000", -90); break; default: // Invalid orientation break; } $image->setImageOrientation(Imagick::ORIENTATION_TOPLEFT); }
Die Funktion könnte folgendermaßen verwendet werden:
$img = new Imagick('/path/to/file'); autorotate($img); $img->stripImage(); // if you want to get rid of all EXIF data $img->writeImage();
quelle
rotateImage
Zeug repariert. Wenn Sie alle Ausrichtungen testen möchten: Es gibt ein ordentliches Github-Repo das für jeden Exif-Wert ein Bild enthält.