【问题标题】:Merge a PNG to a JPG or other php将 PNG 合并为 JPG 或其他 php
【发布时间】: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);

我做错了什么?

【问题讨论】:

标签: php png opacity alphablending


【解决方案1】:

junihh 使用 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('Content-type: image/png'); 
echo($img2);

【讨论】:

    猜你喜欢
    • 2011-05-11
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多