首頁 >後端開發 >php教程 >如何在 PHP 中調整 PNG 的透明度而不失去 Alpha?

如何在 PHP 中調整 PNG 的透明度而不失去 Alpha?

Susan Sarandon
Susan Sarandon原創
2024-11-18 02:07:01386瀏覽

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

如何在PHP 中調整具有透明度的PNG 圖像而不丟失Alpha

嘗試在PHP 中調整具有透明度的PNG 圖像大小時,許多用戶遇到問題背景顏色變為黑色。本文將解決這個問題並提供解決方案。

關鍵在於在分配透明度之前適當設定影像混合模式和 Alpha 通道保存標誌。

以下是更新的程式碼:

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;
}

使用此更新的程式碼,可以在不影響 Alpha 頻道的情況下調整具有透明度的 PNG 圖像的大小,從而確保透明度保留。

以上是如何在 PHP 中調整 PNG 的透明度而不失去 Alpha?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn