Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich die Größe von PNGs mit Transparenz in PHP ändern, ohne Alpha zu verlieren?

Wie kann ich die Größe von PNGs mit Transparenz in PHP ändern, ohne Alpha zu verlieren?

Susan Sarandon
Susan SarandonOriginal
2024-11-18 02:07:01386Durchsuche

How to Resize PNGs with Transparency in PHP Without Losing Alpha?

So ändern Sie die Größe von PNG-Bildern mit Transparenz in PHP, ohne Alpha zu verlieren

Beim Versuch, die Größe von PNG-Bildern mit Transparenz in PHP zu ändern, stoßen viele Benutzer auf Probleme wobei die Hintergrundfarbe zu Schwarz wechselt. Dieser Artikel befasst sich mit diesem Problem und bietet eine Lösung.

Der Schlüssel liegt darin, den Bildüberblendungsmodus und das Alphakanal-Speicherflag entsprechend einzustellen, bevor Transparenz zugewiesen wird.

Hier ist der aktualisierte Code:

function resizePNG($image, int $newWidth, int $newHeight) {
    // Create a new true color image
    $newImg = imagecreatetruecolor($newWidth, $newHeight);

    // Disable blending and enable alpha saving
    imagealphablending($newImg, false);
    imagesavealpha($newImg, true);

    // Allocate transparent color
    $transparent = imagecolorallocatealpha($newImg, 255, 255, 255, 127);

    // Fill the new image with transparent color
    imagefilledrectangle($newImg, 0, 0, $newWidth, $newHeight, $transparent);

    // Get the width and height of the original image
    $src_w = imagesx($image);
    $src_h = imagesy($image);

    // Copy and resize the original image onto the new image
    imagecopyresampled($newImg, $image, 0, 0, 0, 0, $newWidth, $newHeight, $src_w, $src_h);

    // Return the new resized image
    return $newImg;
}

Mit diesem aktualisierten Code können PNG-Bilder mit Transparenz in der Größe geändert werden, ohne den Alphakanal zu beeinträchtigen, wodurch sichergestellt wird, dass die Transparenz gewährleistet ist konserviert.

Das obige ist der detaillierte Inhalt vonWie kann ich die Größe von PNGs mit Transparenz in PHP ändern, ohne Alpha zu verlieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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