PHP移除图像的一部分,留下一个透明的空间

r7knjye2  于 2023-11-16  发布在  PHP
关注(0)|答案(1)|浏览(116)

我有一个透明的图像,中间有一个条. 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库。

sd2nnvve

sd2nnvve1#

你需要使用gd函数imagecolorallocatealpha来创建一个透明的颜色。
您可以使用PHP生成整个图像。
例如

<?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



如果您不将图像作为结果提交给浏览器,则不需要发送标头。
例如

header('Content-Type: image/png');
imagepng($image);


将在请求浏览器中显示图像,而不是将其保存到文件中。

相关问题