在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