首頁 > 後端開發 > php教程 > 在 PHP 中調整 PNG 大小時如何保持透明度?

在 PHP 中調整 PNG 大小時如何保持透明度?

Barbara Streisand
發布: 2024-11-28 14:20:16
原創
614 人瀏覽過

How to Preserve Transparency When Resizing PNGs in PHP?

如何在PHP 中有效調整透明背景PNG 的大小

在PHP 中調整透明PNG 影像的大小可能是一項具有挑戰性的任務,但這對於保持影像品質。您提供的程式碼遇到一個問題,即調整大小時背景顏色會變成黑色。要解決此問題,請按照以下更新的程式碼進行操作:

$this->image = imagecreatefrompng($filename);

imagealphablending($this->image, false);
imagesavealpha($this->image, true);

$newImage = imagecreatetruecolor($width, $height);

// Allocate a new transparent color and enable alpha blending
$background = imagecolorallocatealpha($newImage, 255, 255, 255, 127);
imagefilledrectangle($newImage, 0, 0, $width, $height, $background);
imagealphablending($newImage, true);
imagesavealpha($newImage, true);

// Resize the image with transparent background preserved
imagecopyresampled($newImage, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
$this->image = $newImage;

imagepng($this->image, $filename);
登入後複製

主要變更:

  • imagealphablending(false):在分配透明顏色之前禁用alpha混合以防止不必要的
  • imagesavealpha(true):在影像複製之前啟用透明背景保存。
  • imagefilledrectangle():用透明的color.

更新:

更新:更新:更新:更新:更新:設定為0 的透明背景。但是,對於不透明度值在 0 到 100 之間的影像,它仍然會產生黑色背景。不幸的是,GD 庫中沒有直接的解決方案來處理這個用例。

以上是在 PHP 中調整 PNG 大小時如何保持透明度?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板