PHP liest EXIF-Daten und passt die Bildausrichtung an
Beim Hochladen von Bildern, insbesondere von mobilen Geräten, ist es wichtig, sicherzustellen, dass deren Ausrichtung korrigiert wird. Dies wird erreicht, indem die EXIF-Daten gelesen und das Bild entsprechend bearbeitet werden.
EXIF-Daten lesen
Die Funktion exif_read_data() wird verwendet, um die EXIF-Informationen aus dem hochgeladenen Bild zu lesen JPEG-Bild. Zum Beispiel:
<code class="php">$exif = exif_read_data($upload_path . $newfilename);</code>
Das in $exif gespeicherte Ergebnis enthält verschiedene Informationen, einschließlich Ausrichtungsdaten.
Ausrichtungsanpassung
Zur Korrektur Um die Ausrichtung zu ermitteln, überprüfen Sie das Feld „Ausrichtung“ der EXIF-Daten. Zu den üblichen Werten gehören:
Wenden Sie basierend auf dem Ausrichtungswert die entsprechende Transformation an, indem Sie Bildbearbeitungsfunktionen wie imagerotate() oder rotationImage() verwenden.
Behebung häufiger Probleme mit iPhone- und Android-Bildern
Ihr Code kann Probleme mit Bildern von iPhones und Android-Geräten haben, da diese EXIF-Daten häufig auf nicht standardmäßige Weise einbetten. Um dieses Problem zu beheben, sollten Sie die Verwendung von GD- oder ImageMagick-Funktionen zur Ausrichtungskorrektur in Betracht ziehen.
GD-Funktion
<code class="php">function image_fix_orientation(&$image, $filename) { $exif = exif_read_data($filename); if (!empty($exif['Orientation'])) { switch ($exif['Orientation']) { case 3: $image = imagerotate($image, 180, 0); break; case 6: $image = imagerotate($image, 90, 0); break; case 8: $image = imagerotate($image, -90, 0); break; } } }</code>
ImageMagick-Funktion
<code class="php">function image_fix_orientation($image) { if (method_exists($image, 'getImageProperty')) { $orientation = $image->getImageProperty('exif:Orientation'); } else { $filename = $image->getImageFilename(); if (empty($filename)) { $filename = 'data://image/jpeg;base64,' . base64_encode($image->getImageBlob()); } $exif = exif_read_data($filename); $orientation = isset($exif['Orientation']) ? $exif['Orientation'] : null; } if (!empty($orientation)) { switch ($orientation) { case 3: $image->rotateImage('#000000', 180); break; case 6: $image->rotateImage('#000000', 90); break; case 8: $image->rotateImage('#000000', -90); break; } } }</code>
Diese Funktionen passen die Bildausrichtung ohne erneutes Abtasten an und bewahren so die Bildqualität.
Das obige ist der detaillierte Inhalt vonWie korrigiere ich die Bildausrichtung beim Hochladen von Bildern von Mobilgeräten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!