Warum funktioniert das Drehen von Bildern basierend auf EXIF-Daten nicht auf iPhones und Android-Geräten?

Mary-Kate Olsen
Freigeben: 2024-10-27 18:38:30
Original
625 Leute haben es durchsucht

Why is rotating images based on EXIF data not working for iPhones and Android devices?

EXIF-Daten lesen und Bildausrichtung in PHP anpassen

Problem:

Hochgeladene Bilder drehen basierend auf ihrer Ausrichtung unter Verwendung von EXIF-Daten funktioniert bei Bildern von iPhones und Android nicht korrekt.

Code:

Der folgende Code versucht, ein Bild basierend auf seinem EXIF ​​zu drehen Ausrichtung:

<code class="php">if(move_uploaded_file($_FILES['photo']['tmp_name'], $upload_path . $newfilename)){
            chmod($upload_path . $newfilename, 0755);
            $exif = exif_read_data($upload_path . $newfilename);
            $ort = $exif['IFD0']['Orientation'];
            switch($ort)
            {

                case 3: // 180 rotate left
                    $image->imagerotate($upload_path . $newfilename, 180, -1);
                    break;


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

                case 8:    // 90 rotate left
                    $image->imagerotate($upload_path . $newfilename, 90, -1);
                    break;
            }
            imagejpeg($image, $upload_path . $newfilename, 100);
            $success_message = 'Photo Successfully Uploaded';
        }else{
            $error_count++;
            $error_message = 'Error: Upload Unsuccessful<br />Please Try Again';
        }</code>
Nach dem Login kopieren

Die Ausgabe von var_dump($exif) zeigt an, dass das Feld „Ausrichtung“ in den EXIF-Daten für die Bilder von iPhones und Android vorhanden ist.

Lösung:

Um das Problem zu beheben, muss die Ausrichtungskorrekturfunktion optimiert werden, um die spezifischen Ausrichtungswerte zu verarbeiten, die von iPhones und Android verwendet werden.

Hier ist eine verbesserte Version der Ausrichtungskorrekturfunktion mit GD:

<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>
Nach dem Login kopieren

Um die Funktion zu nutzen, wenden Sie sie einfach auf das Bild an, bevor Sie es speichern oder anzeigen:

<code class="php">image_fix_orientation($image, $upload_path . $newfilename);
imagejpeg($image, $upload_path . $newfilename, 100);</code>
Nach dem Login kopieren

Diese optimierte Funktion sollte Bilder von iPhones und Android jetzt basierend auf ihren EXIF-Ausrichtungsdaten korrekt drehen .

Das obige ist der detaillierte Inhalt vonWarum funktioniert das Drehen von Bildern basierend auf EXIF-Daten nicht auf iPhones und Android-Geräten?. 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!