Aktueller Standort: Startseite> Neueste Artikel> Kombinieren Sie ImageFlip und exif_read_data, um die richtige Richtung des Bildflips zu erhalten

Kombinieren Sie ImageFlip und exif_read_data, um die richtige Richtung des Bildflips zu erhalten

gitbox 2025-05-27

Bei der Arbeit mit Bildern stoßen wir manchmal Probleme mit einer falschen Ausrichtung des Bildes. Vor allem bei Fotos mit einem Smartphone werden die Richtungsinformationen des Bildes häufig in den EXIF ​​-Daten gespeichert. Um das Bild korrekt anzuzeigen, müssen wir die Ausrichtung des Bildes anhand dieser Informationen anpassen. PHP bietet eine ImageFlip -Funktion, um Bildflip -Operationen zu verarbeiten, und es gibt auch eine exif_read_data -Funktion, mit der exif -Daten gelesen werden können, um die Richtung des Bildes zu erhalten. In diesem Artikel wird vorgestellt, wie diese beiden Funktionen kombiniert werden, um die Flip -Richtung des Bildes zu beheben.

1. Richtungsinformationen in EXIF ​​-Daten

EXIF (ausgetauschtbares Bilddateiformat) ist Teil der Bilddatei, die eine Vielzahl von Informationen zu Bildaufnahmen, Kameraeinstellungen usw. enthält. In JPEG -Formatbildern speichert die EXIF ​​-Daten normalerweise die Richtungsinformationen des Bildes, insbesondere im Orientierungs -Tag. Der Wert der Orientierung repräsentiert den Drehwinkel oder den Flip des Bildes relativ zur normalen Schießrichtung.

Die gemeinsamen Ausrichtungwerte sind wie folgt:

  • 1: Normal (keine Rotation oder Flip)

  • 3: 180 Grad drehen

  • 6: 90 Grad im Uhrzeigersinn drehen

  • 8: 90 Grad gegen den Uhrzeigersinn drehen

  • 2: Vertikaler Flip

  • 4: Horizontaler Flip

  • 5: vertikal umdrehen und 90 Grad im Uhrzeigersinn drehen

  • 7: Horizontal umdrehen und 90 Grad im Uhrzeigersinn drehen

Daher können wir beurteilen, ob das Bild umgedreht werden muss und wie sie basierend auf dem Ausrichtungswert in den EXIF ​​-Daten umdrehen müssen.

2. Verwenden Sie exif_read_data , um exif -Daten zu lesen

Die Funktion EXIF_READ_DATA kann EXIF ​​-Daten in der Bilddatei lesen. Wir können Orientierungsinformationen durch diese Funktion erhalten, um die Richtung des Bildes zu beurteilen.

Hier ist ein Beispielcode zum Lesen von EXIF ​​-Daten:

 <?php
$file = 'path/to/your/image.jpg';

// Überprüfen Sie, ob die Datei vorhanden ist
if (file_exists($file)) {
    // LesenEXIFDaten
    $exif = exif_read_data($file);

    // WennEXIFDaten包含OrientationFelder
    if (isset($exif['Orientation'])) {
        echo 'Orientation: ' . $exif['Orientation'];
    } else {
        echo 'Nicht gefundenOrientationFelder';
    }
}
?>

Dieser Code liest die EXIF ​​-Daten in der Bilddatei und gibt den Wert des Orientierungsfelds aus. Wenn dieses Feld in den EXIF ​​-Daten nicht vorhanden ist, bedeutet dies, dass das Bild keine Richtungsinformationen enthält.

3. Verwenden Sie die Bildflip -Funktion, um die Bildorientierung zu beheben

ImageFlip ist eine GD -Bibliotheksfunktion in PHP, mit der Bilder umdrehen können. Basierend auf dem Orientierungswert in den EXIF ​​-Daten können wir entscheiden, wie Sie ImageFlip verwenden, um die Bildorientierung zu beheben.

Hier ist ein komplettes Code -Beispiel, das exif_read_data und bildflip -Funktionen kombiniert, um die Bildorientierung zu beheben:

 <?php
function fixImageOrientation($file) {
    // Überprüfen Sie, ob die Datei vorhanden ist
    if (file_exists($file)) {
        // Holen Sie sich das BildEXIFDaten
        $exif = exif_read_data($file);
        
        // WennEXIFDaten包含OrientationFelder
        if (isset($exif['Orientation'])) {
            // ErhaltenOrientationWert von
            $orientation = $exif['Orientation'];
            
            // Bilder laden
            $image = imagecreatefromjpeg($file);

            // entsprechendOrientationWert zur Behebung der Bildorientierung
            switch ($orientation) {
                case 3:
                    // Drehen180Grad
                    imageflip($image, IMG_FLIP_BOTH);
                    break;
                case 6:
                    // 顺时针Drehen90Grad
                    $image = imagerotate($image, -90, 0);
                    break;
                case 8:
                    // 逆时针Drehen90Grad
                    $image = imagerotate($image, 90, 0);
                    break;
                case 2:
                    // Vertikaler Flip
                    imageflip($image, IMG_FLIP_VERTICAL);
                    break;
                case 4:
                    // Horizontaler Flip
                    imageflip($image, IMG_FLIP_HORIZONTAL);
                    break;
                case 5:
                    // Vertikaler Flip并Drehen90Grad顺时针
                    imageflip($image, IMG_FLIP_VERTICAL);
                    $image = imagerotate($image, -90, 0);
                    break;
                case 7:
                    // Horizontaler Flip并Drehen90Grad顺时针
                    imageflip($image, IMG_FLIP_HORIZONTAL);
                    $image = imagerotate($image, -90, 0);
                    break;
                default:
                    // Keine Reparatur erforderlich
                    break;
            }

            // Speichern Sie das reparierte Bild
            imagejpeg($image, 'path/to/save/fixed_image.jpg');

            // Kostenloser Bildspeicher
            imagedestroy($image);

            echo "Die Bildrichtung wird erfolgreich repariert!";
        } else {
            echo "NEINOrientationFelder,Keine Reparatur erforderlich图片方向。";
        }
    } else {
        echo "Die Bilddatei existiert nicht。";
    }
}

// Aufrufen einer Funktion, um die Bildrichtung zu beheben
fixImageOrientation('path/to/your/image.jpg');
?>

Lesen Sie in diesem Code zunächst die EXIF ​​-Daten des Bildes über die Funktion EXIF_READ_DATA und erhalten Sie den Wert des Orientierungsfeldes . Bestimmen Sie dann auf diesem Wert, wie Sie ImageFlip und Imagerotat verwenden, um die Ausrichtung des Bildes zu reparieren. Das feste Bild wird auf dem angegebenen Pfad gespeichert.