簡體   English   中英

使用PHP提高PNG透明性

[英]Better quality PNG transparency with PHP

我有一個看起來像這樣的代碼:

<?php
$imgl = "test/white.png";
$img2 = "test/1.png";

$dest = imagecreatefrompng($imgl);
$src = imagecreatefrompng($img2);
imagecolortransparent($src, imagecolorat($src, 0, 0));
imagecolortransparent($dest, imagecolorat($dest, 0, 0));

$src_x = imagesx($src);
$src_y = imagesy($src);
imagecopymerge($dest, $src, 0, 0, 0, 0, $src_x, $src_y, 100);

// Output and free from memory
header('Content-Type: image/png');
imagegif($dest);

imagedestroy($dest);
imagedestroy($src);
?>

此代碼將圖像合並在一起,同時保持其透明度。 但是,此代碼使圖像的透明度非常低,並且邊緣看起來非常粗糙。 我想知道,是否有辦法可以保持圖像的透明度,但質量更好? 但是,我仍然希望該腳本完成相同的功能。

看起來您正在將圖像輸出為GIF而不是PNG。 嘗試使用imagepng()而不是imagegif()

imagepng($dest);

GIF僅具有1位Alpha通道,這意味着它無法表示部分透明性。 每個像素都是完全透明或完全不透明的。 這是您的代碼的第一個潛在問題。

另一個是imagecolortransparent()將一種顏色設置為透明。 這意味着,只有正是彩色像素將是透明的。 如果需要平滑過渡,則可能需要自己實現實際的每像素真彩色透明度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM