【发布时间】:2012-10-17 05:39:46
【问题描述】:
我尝试了许多解决方案和真相,到了你不知道还能做什么的地步。
以下图片是PNG(“cover.png”):
因为你会有一个空白的椭圆形真的是完全透明的。使用 PHP,我试图将其融合到这张图片(“lapiz.jpg”):
然而,尽管我已经尽力让第一张图像的空白空间不透明,而是完全空白,覆盖了应该融化的图像。
现在这是我的代码:
$img_user = 'fotos/lapiz.jpg';
$img_user_type = getImageInfo($img_user,'type');
$posX = 404;
$posY = 2;
$width = getImageInfo($img_user,'width');
$height = getImageInfo($img_user,'height');
$stamp = 'fotos/cover.png';
switch($img_user_type)
{
case 'jpeg':
$img_user_create = imagecreatefromjpeg($img_user);
break;
case 'gif':
$img_user_create = imagecreatefromgif($img_user);
break;
case 'png':
$img_user_create = imagecreatefrompng($img_user);
break;
}
$im = imagecreatefrompng($stamp);
imagealphablending($im, false);
imagesavealpha($im, true);
imagecolortransparent($im, imagecolorallocate($im, 255, 255, 255));
imagecopymerge($img_user_create, $im, $posX, $posY, 0, 0, $width, $height, 100);
header('Content-Type: image/png');
imagepng($im);
ImageDestroy($im);
ImageDestroy($img_user_create);
我做错了什么?
【问题讨论】:
-
你用过imagemagick吗?它使这样的事情变得非常容易。
-
第一个优化的图片:dl.dropbox.com/u/6576414/cover.png
-
@Kai,只想说声谢谢。 imagemagick 类为我工作,我没有使用,因为我不知道。这是我现在的代码: $img1 = new Imagick('fotos/lapiz.jpg'); $img2 = new Imagick('fotos/cover.png'); $posX = 404; $posY = 2; $img2->compositeImage($img1, imagick::COMPOSITE_DSTOVER, $posX, $posY); header('内容类型:图片/png');回声($img2);简单到令人惊叹。
标签: php png opacity alphablending