将jpg转换为png并使其颜色透明

时间:2011-12-26 14:28:46

标签: php image png transparency gd

在PHP中,我正在尝试处理图像,也就是说,我正试图在jpg文件中使周围的颜色透明。顺便说一下,我正在使用GD库。

我可以使用imagecreatefromjpeg和imagepng函数将图像转换为png,直接输出图像。但我找不到让指定颜色透明的方法。此外,某些图像在保存期间创建的黑色图形周围具有较浅的灰色伪影。我有什么方法可以包括这些吗?

我有点迷茫。我找到了一些答案,使图像的颜色透明,但我不知道如何首先转换图像而不将其保存到服务器然后处理它。

有什么想法吗?

编辑:到目前为止,这是我的代码。我设法使指定的颜色透明但我无法检测周围的颜色。

大部分时间图像将被关闭,因为它们是徽标或文本,以允许的图像格式保存。所以我不认为我会有一个关于渐变的主要问题,但如果我能设法操纵周围渐变的透明度(如果有的话),例如阴影,那就太棒了。

是否还有办法检测png / gif图像是否已透明?我的代码现在为这些文件将透明部分描绘成黑色。

$file = 'images/18.jpg';
$specs = getimagesize($file);

if($specs[2] == 1) $img = imagecreatefromgif($file);        //gif
elseif($specs[2] == 2) $img = imagecreatefromjpeg($file);   //jpg
elseif($specs[2] == 3) $img = imagecreatefrompng($file);    //png
else exit('unsupported file type!');

$newimg = imagecreatetruecolor(imagesx($img), imagesy($img));
// create a new image with the size of the old one
imagecopy($newimg,$img,0,0,0,0,imagesx($img),imagesy($img));
// copy the old one

imagedestroy($img);
// free the memory

$white = imagecolorallocate($newimg,255,255,255);
imagecolortransparent($newimg,$white);
// make white pixels transparent

header('Content-Type: image/png');
imagepng($newimg);
imagedestroy($newimg);
// and finally output the new image

1 个答案:

答案 0 :(得分:1)

您可以使用imagecolortransparent功能设置透明色。

相关问题