Php 将jpg转换为png,并使其中的颜色透明

Php 将jpg转换为png,并使其中的颜色透明,php,image,png,transparency,gd,Php,Image,Png,Transparency,Gd,在PHP中,我试图处理一个图像,也就是说,我试图在jpg文件中使周围的颜色透明。顺便说一下,我正在使用GD库 通过使用imagecreatefromjpeg和imagepng函数将图像转换为png,我可以直接输出图像。但是我找不到使指定颜色透明的方法。此外,一些图像在黑色图形周围有较浅的灰色瑕疵,这些瑕疵是在保存过程中创建的。我有没有办法把这些也包括进去 我有点迷路了。我找到了一些使图像上的颜色透明的方法,但我不知道如何在不将图像保存到服务器的情况下首先转换图像,然后再对其进行处理 有什么想法吗

在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

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

您可以在此处发布代码吗?“代码是通用语言。当然,对不起。我会更新我的问题。谢谢,亚历克斯。您知道如何检测颜色并使其透明吗?单色的效果不错,但是在图像中放置阴影需要更多一些。您必须调用
imagesavealpha($image,true)$color=imagecoloralallocatealpha($image,$red,$green,$blue,$alpha)您如何知道rgba值?r是红色,g是绿色,b是蓝色的“百分比”,范围从0到255。a是alpha值,也就是透明度。哦,好的。我以为你指的是外部渐变中使用的颜色,比如在你之前的评论中“投阴影”图像中的灰色阴影。这整件事似乎有点不可能,所以我放弃了尝试。无论如何谢谢:)干杯。