Heim > Backend-Entwicklung > PHP-Tutorial > Warum werden iPhone- und Android-Bildausrichtungen nicht mit der PHP-Funktion „exif_read_data' korrigiert?

Warum werden iPhone- und Android-Bildausrichtungen nicht mit der PHP-Funktion „exif_read_data' korrigiert?

Barbara Streisand
Freigeben: 2024-10-28 06:57:02
Original
448 Leute haben es durchsucht

Why are iPhone and Android image orientations not being corrected using PHP's `exif_read_data` function?

PHP read_exif_data und Ausrichtung anpassen

Der bereitgestellte Code versucht, die Ausrichtung hochgeladener JPEG-Bilder basierend auf den EXIF-Daten anzupassen. Benutzer haben jedoch Probleme mit Bildern von iPhones und Android-Geräten gemeldet.

Code-Analyse

Die EXIF-Daten werden mit der Funktion exif_read_data extrahiert. Die switch-Anweisung prüft auf bestimmte Ausrichtungen und versucht, das Bild entsprechend zu drehen. Es scheint jedoch, dass die bereitgestellten EXIF-Daten keinen gültigen Ausrichtungswert enthalten.

Aktualisierter Code

Um dieses Problem zu beheben, können wir eine robustere Methode verwenden Orientierungsdaten extrahieren. Hier ist eine aktualisierte Version des Codes:

<code class="php">$exif = exif_read_data($upload_path . $newfilename, 'ANY_TAG');
$ort = $exif['IFD0']['Orientation'] ?? 1;</code>
Nach dem Login kopieren

EXIF-Ausrichtungswerte

Der Ausrichtungswert kann zwischen 1 und 8 liegen, wobei unterschiedliche Werte unterschiedliche Drehungen oder Spiegelungen anzeigen .

  • 1: Horizontal (normal)
  • 3: 180° CW-Rotation
  • 6: 90° CW-Rotation
  • 8: 90° Drehung gegen den Uhrzeigersinn
  • 2: Horizontale Drehung
  • 4: Vertikale Drehung
  • 5: Horizontale Drehung und 90°-Drehung im Uhrzeigersinn
  • 7: Vertikale Drehung und 90° Drehung im Uhrzeigersinn

Bildausrichtung anpassen

Mit dem richtigen Ausrichtungswert können wir das Bild dann nach Bedarf anpassen:

<code class="php">switch ($ort)
{
    case 3: // 180 rotate left
        $image->imagerotate(-180, -1);
        break;

    case 6: // 90 rotate right
        $image->imagerotate(-90, -1);
        break;

    case 8:    // 90 rotate left
        $image->imagerotate(90, -1);
        break;
}</code>
Nach dem Login kopieren

Zusätzliche Überlegungen

Wenn die EXIF-Daten immer noch nicht den Ausrichtungswert enthalten oder die Anpassung nicht zu funktionieren scheint, müssen Sie möglicherweise spezifische Dokumentation für Ihre Bildbibliothek konsultieren oder die Verwendung in Betracht ziehen alternative Methoden zur Bestimmung der richtigen Ausrichtung.

Das obige ist der detaillierte Inhalt vonWarum werden iPhone- und Android-Bildausrichtungen nicht mit der PHP-Funktion „exif_read_data' korrigiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage