我有一个透明的图像,中间有一个条形... http://i66.tinypic.com/2zyeg4h.png
使用php我想删除栏上的中间部分,在栏的中间留下一个透明空间。我试试这个代码......
$im = imagecreatefrompng('****root****/image.png');
//make a yellow box
$transparent = imagecolorallocate($im, 255, 255, 0);
//make the yellow box transparent
imagecolortransparent($im, $transparent);
imagefilledrectangle($im, 200, 115, 300, 137, $transparent);
imagealphablending($im, false);
imagesavealpha($im, true);
header ('Content-Type: image/png');
imagepng($im);
$save = "****root****/test.png";
imagepng($im, $save);
imagedestroy($im);
?>
但输出图像的矩形保留黄色,而不是将其透明。
http://i67.tinypic.com/1ny6j4.png
我哪里错了?如果我删除......
imagealphablending($im, false);
imagesavealpha($im, true);
我在中心(在浏览器中)获得透明框,但图像的其余部分失去了透明度并且具有白色背景,当我下载该图像并在照片编辑器中打开时,透明框也在中心不见了。我在我的服务器上设置了GD库。
答案 0 :(得分:1)
您需要使用gd函数imagecolorallocatealpha
来创建透明色。
您可以使用PHP生成整个图像。
e.g。
<?php
// generate empty image
$image = imagecreate(500, 262);
// define black
$black = imagecolorallocate($image, 0, 0, 0);
// create left part of the bar
imagefilledrectangle($image, 0, 110, 200, 162, $black);
// create right part of the bar
imagefilledrectangle($image, 300, 110, 500, 162, $black);
// save image
imagepng($image, 'outimage.png');
如果您想坚持使用现有图像
<?php
// generate empty image
$image = imagecreatefrompng('input.png');
// define transparent
$transparent = imagecolorallocatealpha($image, 255, 255, 255, 127);
// create the transparent area
imagefilledrectangle($image, 200, 110, 300, 162, $transparent);
// save image
imagepng($image, 'output.png');
input.png
output.png
如果您未将图片作为结果提交给浏览器,则无需发送标题。
e.g。
header('Content-Type: image/png');
imagepng($image);
会在请求的浏览器中显示图像,而不是将其保存到文件中。