Aktueller Standort: Startseite> Neueste Artikel> So halten Sie das Bildkoordinatensystem nach dem Umdrehen eines Bildes konsistent

So halten Sie das Bildkoordinatensystem nach dem Umdrehen eines Bildes konsistent

M66 2025-05-31

Beim Verarbeiten von Bildern mithilfe der GD -Bibliothek von PHP ist ImageFlip () eine sehr bequeme Funktion, die Bilder schnell, vertikal oder gleichzeitig horizontal, vertikal oder gleichzeitig umsetzt. Nach dem Umdrehen des Bildes wird jedoch ein Problem mit Beschriftungen, Koordinatenpunkten oder anderen Positionsmarken auf dem Bild des Bildkoordinatensystems auf dem Bild vorhanden: Der ursprüngliche Punkt entspricht nicht mehr derselben Position auf dem Bild.

In diesem Artikel wird nach Verwendung der Funktion imageFlip () die Anmerkungen oder Elemente auf dem Bild in der erwarteten Position korrekt angepasst, sodass das Koordinatensystem korrekt angepasst wird.

Bildflip Einführung

Die ImageFlip () -Funktion von PHP wird seit PHP 5.5 bereitgestellt und wird verwendet, um Bilder umzudrehen:

 bool imageflip ( GdImage $image , int $mode )

wobei $ modus einer der folgenden sein kann:

  • Img_flip_horizontal : horizontaler Flip

  • IMG_FLIP_VERTICAL : vertikaler Flip

  • Img_flip_both : horizontal und vertikal gleichzeitig flip

Problemszenario Beschreibung

Angenommen, wir haben ein Bild mit einem Koordinatenpunkt (x, y) . Wir verwenden ImageFlip () , um das Bild horizontal ( img_flip_horizontal ) und zu diesem Zeitpunkt das Bildpixel, wobei (x, y) ebenfalls auf die andere Seite geworfen wird, und die ursprünglichen Koordinaten ungenau.

Zum Beispiel:

  • Die Breite des Originalbildes beträgt 500px

  • Der ursprüngliche Koordinatenpunkt ist (100, 200)

  • Nach dem Flippen sollte der Punkt tatsächlich sein (500 - 100 = 400, 200)

Lösung: Koordinatenpunkte Remap -Punkte

Neue Koordinatenberechnungsmethode nach horizontalem Flip:

 $newX = $imageWidth - $oldX;
$newY = $oldY;

Neue Koordinaten nach vertikalem Flip:

 $newX = $oldX;
$newY = $imageHeight - $oldY;

Gleichzeitig umdrehen:

 $newX = $imageWidth - $oldX;
$newY = $imageHeight - $oldY;

Beispielcode

Hier ist ein vollständiges Beispiel, das zeigt, wie ein Bild umdrehen und Koordinaten korrekt sind:

 <?php
// Laden Sie das Originalbild
$imagePath = 'https://m66.net/images/sample.jpg';
$image = imagecreatefromjpeg($imagePath);

// Holen Sie sich Bildbreite und Höhe
$width = imagesx($image);
$height = imagesy($image);

// Originalkoordinatenpunkt
$oldX = 100;
$oldY = 200;

// Horizontale Flip durchführen
imageflip($image, IMG_FLIP_HORIZONTAL);

// Neue Koordinatenberechnung
$newX = $width - $oldX;
$newY = $oldY;

// Mark neue Koordinatenpunkte markieren(Rot)
$red = imagecolorallocate($image, 255, 0, 0);
imagefilledellipse($image, $newX, $newY, 10, 10, $red);

// Ausgabebild
header('Content-Type: image/jpeg');
imagejpeg($image);
imagedestroy($image);
?>

Tipps

  • Die Koordinatenkonvertierungslogik hängt eng mit dem Bildflip -Muster zusammen und muss genau übereinstimmen.

  • Wenn mehrere Koordinatenpunkte in Stapeln umgewandelt werden müssen, wird empfohlen, sie in Funktionen zur Verarbeitung zu integrieren.

  • Wenn der Bildinhalt von einem Benutzer -Upload stammt, überprüfen Sie unbedingt die Bildgröße und geben Sie zuerst ein, um Sicherheitsprobleme zu vermeiden.

Abschluss

ImageFlip () ist ein sehr effizientes Werkzeug für die Verarbeitung von Bildern. Um die "Koordinatenbedeutung" im Bild konsistent zu halten, müssen wir die Koordinatenposition nach dem Flip aktiv berechnen und aktualisieren. Durch die Beherrschung dieser Technik können Sie flexiblere Bildverarbeitungsfunktionen in PHP implementieren, wie z. B. interaktive Markierung, Bildannotationstools oder grafische Positionierungssysteme.