PHP GD2:如何保持alpha通道透明度和正确的gamma
我对图像缩放的讨论很感兴趣,后来发现我用来从上传的图像创建缩略图的PHP代码遇到了同样的问题。我决定尝试在底部附近发布的PHP修补程序(将伽玛值从2.2转换为1.0,调整图像大小,将伽玛值从1.0转换回2.2)。这有助于解决文章中提到的问题,但是对代码的这种修改具有淘汰PNG alpha通道透明度的不幸副作用。
这是我对伽马校正的代码。
<?php
$image = imagecreatefrompng($source_file);
$resized_image = imagecreatetruecolor($new_width, $new_height);
imagealphablending($resized_image, false);
imagesavealpha($resized_image, true);
imagegammacorrect($image, 2.2, 1.0);
imagecopyresampled($resized_image, $image, 0, 0, 0, 0, $new_width, $new_height, $image_width, $image_height);
imagegammacorrect($resized_image, 1.0, 2.2);
imagepng($resized_image, $dest_file);
?>
任何人都知道如何调整图像大小,采用伽马校正技巧,同时保持原始图像的alpha通道透明度?
编辑
样本图片:
原始文件 - 具有Alpha通道透明度的PNG
调整了两个imagegammacorrect()函数调用的调整大小的文件
调整大小的文件,同时调用imagegammacorrect()函数
在尝试更正伽玛之前,您可以看到透明度很好。 (查看透明度的最简单方法是检查包裹在图像周围的段落标记,并通过FireBug或类似方法添加背景:black;到其样式属性。)
原始图片http://ender.hosting.emarketsouth.com/images/test-image.png
没有伽马校正http://ender.hosting.emarketsouth.com/images/test-image-resized-no-gamma.png
伽玛校正 - 没有透明度http://ender.hosting.emarketsouth.com/images/test-image-resized.png
没有找到相关结果
已邀请:
2 个回复
癸痊醒
当然,用变量替换硬编码值...这是我使用你的图像和我的代码得到的结果: 调整后的图像http://www.jejik.com/sander/test-image-scaled.png
烷刨画颠离