Aktueller Standort: Startseite> Neueste Artikel> Ernte -PNG -Bilder mit ImageCrop -Funktion und transparenten Hintergrund halten

Ernte -PNG -Bilder mit ImageCrop -Funktion und transparenten Hintergrund halten

gitbox 2025-05-29

Bei der Verwendung von PHP zum Verarbeiten von Bildern ist die ImageCrop () -Funktion ein sehr praktisches Werkzeug, mit dem Bilder zu bestimmten Bereichen aufschneiden können. Wenn Sie jedoch mit PNG -Bildern mit einem transparenten Hintergrund zu tun haben, kann eine falsche Verarbeitung dazu führen, dass der transparente Hintergrund nach dem Zuschneiden verloren geht und ein schwarzer oder weißer Hintergrund wird. In diesem Artikel wird ausführlich erläutert, wie PNG -Bilder bei der Beschneidung mit ImageCrop () -Funktion transparent bleiben.

1. Einführung in die ImageCrop () -Funktion

ImageCrop () ist eine von PHP 5.5.0 eingeführte Funktion. Seine Funktion besteht darin, eine neue Bildressource zurückzugeben, die das Ergebnis des Originalbildes entspricht, das gemäß der angegebenen Größe geschnitten wird. Die grundlegende Verwendung ist wie folgt:

 $cropped = imagecrop($image, ['x' => 100, 'y' => 100, 'width' => 200, 'height' => 200]);

Wenn $ Image ein PNG -Bild ist und Sie den transparenten Hintergrund des Originalbildes nach dem Zuschneiden beibehalten möchten, werden die wichtigsten Details, auf die Sie achten müssen, nachstehend angezeigt.

2. Schlüsselpunkte transparenter Hintergrundzucken

Bei der Verarbeitung von PNG -Bildern und dem Zuschneiden mit ImageCrop () werden die transparenten Teile normalerweise ohne zusätzliche Verarbeitung schwarz gefüllt. Dies liegt daran, dass PHP standardmäßig nicht automatisch transparente Kanäle behält.

Um dieses Problem zu lösen, müssen Sie die folgenden Schritte ausführen, nachdem Sie das Bild geschnitten haben:

  1. Erstellen Sie eine neue transparente Leinwand;

  2. Aktivieren Sie den Alpha -Kanal -Speichern;

  3. Kopieren Sie das verkürzte Bild in diese transparente Leinwand.

  4. Endgültige Ausgabe oder speichern Sie das Bild.

3. Kompletter Beispielcode

Hier ist ein kompletter Beispielcode, der zeigt, wie PNG -Bilder mit transparentem Hintergrund richtig geschnitten und transparent bleiben:

 <?php
// Laden Sie das Originalbild
$sourcePath = 'https://gitbox.net/images/sample.png';
$src = imagecreatefrompng($sourcePath);

// Stellen Sie den Erntebereich ein
$cropArea = [
    'x' => 50,
    'y' => 50,
    'width' => 200,
    'height' => 200
];

// Das Bild erregen
$cropped = imagecrop($src, $cropArea);

if ($cropped !== false) {
    // Erstellen Sie eine neue transparente Leinwand
    $transparent = imagecreatetruecolor($cropArea['width'], $cropArea['height']);
    
    // Aktivieren Sie den Mischmodus der Transparenzmodus
    imagealphablending($transparent, false);
    
    // Speichern Sie die komplettealphaKanalinformationen
    imagesavealpha($transparent, true);
    
    // Füllen Sie die Leinwand mit transparenten Farben
    $transparentColor = imagecolorallocatealpha($transparent, 0, 0, 0, 127);
    imagefill($transparent, 0, 0, $transparentColor);
    
    // 拷贝Das Bild erregen到透明画布上
    imagecopy($transparent, $cropped, 0, 0, 0, 0, $cropArea['width'], $cropArea['height']);
    
    // Ausgabe Bild zum Browser
    header('Content-Type: image/png');
    imagepng($transparent);

    // Ressourcen zerstören
    imagedestroy($transparent);
    imagedestroy($cropped);
    imagedestroy($src);
} else {
    echo 'Anbaus fehlgeschlagen';
}
?>

4.. Dinge zu beachten

  • Eine neue Leinwand muss unter Verwendung von ImagecrreatTueColor () erstellt werden, da die von ImageCrop () zurückgegebene Bildressource möglicherweise nicht die richtigen Alpha -Informationen enthält.

  • Die Verwendung von Imagealphableending () und ImagesAvealpha () ist der Schlüssel zur Aufrechterhaltung eines transparenten Hintergrunds.

  • Wenn Sie vorhaben, das endgültige Bild als Datei zu speichern, können Sie ImagePNG ($ transparent, 'output.png') anstelle von ImagePng ($ transparent) verwenden.

5. Zusammenfassung

Das Aufschneiden von PNG -Bildern und das Beibehalten ihres transparenten Hintergrundeffekts ist in PHP vollständig möglich. Stellen Sie einfach den Alpha -Kanal der Bildressource korrekt ein. Durch die Kombination von ImageCrop () und transparenten Leinwand können Sie den Anbausbereich genau steuern und die ursprüngliche Transparenz des Bildes beibehalten, die für Szenen wie Avatar -Anbaus und Kartenverarbeitung geeignet ist.

Das Beherrschen dieser Technik kann die Qualität und Professionalität der PHP -Bildverarbeitung erheblich verbessern.