Heim >Backend-Entwicklung >PHP-Tutorial >Wie korrigiere ich die Bildausrichtung beim Hochladen von Bildern von Mobilgeräten?

Wie korrigiere ich die Bildausrichtung beim Hochladen von Bildern von Mobilgeräten?

DDD
DDDOriginal
2024-11-03 05:37:02191Durchsuche

How to Correct Image Orientation When Uploading Images from Mobile Devices?

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:

  • 3: 180 Grad gegen den Uhrzeigersinn drehen
  • 6: 90 Grad im Uhrzeigersinn drehen
  • 8: 90 Grad gegen den Uhrzeigersinn drehen

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(&amp;$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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn