是否可以使用PHP为图像创建透明边角?我认为这是可能的,但是我缺少一个在复制图像时会保留alpha值的函数。
我的想法是创建一个宽度和高度相同的图像,然后应用透明角落,但是我需要保留alpha通道,只需复制该蒙版上的图像,保持透明仍然透明,但颜色更改为复制图像(反之亦然,将面具放在图像上。)
是否有可能做到这一点,如果有的话,那是什么命令?
更新:感谢您提供帮助。这是一段时间以前,我忘记了,但如果有人通过这个问题找到解决方案,请访问这个:http://www.pc-siete.g6.cz/galery.html。我制作了渐变,径向渐变和圆角的功能,所以随意使用:)。我并不是真的在我的网站上使用它,但让它们做好准备是件好事。
出于某种原因,下载的文件只包含广告。现在它存储在zip中并正确下载。
答案 0 :(得分:2)
据我所知,没有内置功能可以做到这一点。但是你可以自己创建一个:
function imageapplyroundedcorners(&$img,$radius) {
// for each corner
// loop through pixels between corner and (corner +- radius)
// if distance between pixel and radius > radius, make transparent
// elseif distance > radius-1 make partially transparent (for antialiasing)
}
答案 1 :(得分:1)
我刚刚在PHP中使用ImageMagick创建了这个函数,它正是我想要的。您需要设置TEMP_DIR
常量并在执行路径上使用convert
可执行文件。
function png_corners($image, $r = 12)
{
//Dump out the image as a PNG file.
$tmp_file = tempnam(TEMP_DIR, "image") . ".png";
imagepng($image, $tmp_file);
//Final image file.
$tmp_out_file = tempnam(TEMP_DIR, "out") . ".png";
$x = imagesx($image);
$y = imagesy($image);
$cmd = "convert -size {$x}x{$y} xc:none -fill white -draw 'roundRectangle 0,0, {$x} ,{$y}, {$r}, {$r}' {$tmp_file} -compose SrcIn -composite {$tmp_out_file}";
exec($cmd);
header("Content-Type: image/png");
$contents = file_get_contents($tmp_out_file);
echo $contents;
exit;
}
答案 2 :(得分:1)
不是试图重新发明轮子,而是使用PHP thumbnailer,这将为你创造一切:
require 'Thumbnailer.php';
$th=new Thumbnailer("photo.jpg");
$th->thumbFixed(120,90)->round()->save("thumb.jpg");
答案 3 :(得分:-1)
请参阅ImageMagick reference。是的,您描述的所有内容都是可能的,所有工具都在那里。