php - 在 PHP 中更改图像的不透明度

标签 php image gd opacity transparent

我正在尝试使用 GD 更改图像的不透明度,我找到的几乎所有解决方案都类似于下面的代码,您可以在其中创建白色透明背景并将其与图像合并。

但这并不能使图像透明,图像只会变亮,您实际上无法看透它。

所以我的问题是,如何更改图像的不透明度以便您可以看穿它? 还是我对这段代码做错了什么?

//Create an image with a white transparent background color
$newImage = ImageCreateTruecolor(300, 300);
$bg        = ImageColorAllocateAlpha($newImage, 255, 255, 255, 127);
ImageFill($newImage, 0, 0, $bg);

//Get the image
$source = imagecreatefrompng('my_image.png');

$opacity = 50;    

//Merge the image with the background
ImageCopyMerge($newImage,
               $source,
               0, 0, 0, 0,
               300,
               300,
               $opacity);

header('Content-Type: image/png');
imagepng($newImage);
imagedestroy($newImage);

谢谢!

最佳答案

你只需要使用 imagefilterIMG_FILTER_COLORIZE

$image = imagecreatefrompng('my_image.png');
$opacity = 0.5;
imagealphablending($image, false); // imagesavealpha can only be used by doing this for some reason
imagesavealpha($image, true); // this one helps you keep the alpha. 
$transparency = 1 - $opacity;
imagefilter($image, IMG_FILTER_COLORIZE, 0,0,0,127*$transparency); // the fourth parameter is alpha
header('Content-type: image/png');
imagepng($image);

imagealphablending,我认为是用于绘图目的,因此您不想使用它。我可能是错的。我们都应该查一下:)

如果你想使用百分比,你可以相应地计算$opacity

关于php - 在 PHP 中更改图像的不透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14468405/

相关文章:

javascript - webgl纹理图像源更新

delphi - 如何判断图形或图片是否损坏?

ios - 加载图像时,UITableView 中的滚动非常不稳定

php - 如何在 PHP 的 GD 库中为文本添加光晕或阴影?

php - 在 Woocommerce 编辑帐户页面中添加自定义字段

php - Web 服务和 MySQL 的最佳优化技巧

php - 通过 PHP 处理 Paypal 付款

php - fatal error :调用未定义的方法 DB::get()

PHP 图像处理 GD JPEG 质量

php - 一些图像/GD 问题 : cropping, 设置颜色和透明度