在png(& jpg)图像PHP上添加水印

时间:2016-10-31 13:22:42

标签: php image gd

所以,我试图在jpg / png图像上添加水印(png图像)。事情是......

如果我上传了一个jpg,代码就有效,但是当我上传一个png时,结果与我想要的结果不一样。

如果我上传了一个png,水印就会出现在我上传的图像前面,但是后台不再是透明的(这就是我想要的)。

if(isset($_GET['img'])) {
$image = $_GET['img'];

$stamp = imagecreatefrompng(DIR_PUBLIC . 'watermerk.png');
//$im = imagecreatefromjpeg(DIR_IMAGE . $image);

$fullPath = DIR_IMAGE . $image;

$path_parts = pathinfo($fullPath);
$ext = strtolower($path_parts["extension"]);

// Determine Content Type
switch ($ext) {
    case "png":
        $im = imagecreatefrompng($fullPath);
        $ctype="image/png";
        break;
    case "jpeg":
    case "jpg":
        $ctype="image/jpg";
        $im = imagecreatefromjpeg($fullPath);
        break;
    default:
        $ctype="application/force-download";
}

// Get dimensions
$imageWidth = imagesx($im);
$imageHeight = imagesy($im);

$logoWidth = imagesx($stamp);
$logoHeight = imagesy($stamp);

// Paste the logo
imagecopy(
// destination
    $im,
    // source
    $stamp,
    // destination x and y
    ($imageWidth - $logoWidth) / 2, ($imageHeight - $logoHeight) / 2,
    // source x and y
    0, 0,
    // width and height of the area of the source to copy
    $logoWidth, $logoHeight
);

// Output and free memory
  header("Content-Type: $ctype");
  imagepng($im);
  imagedestroy($im);
}

我想要的是:我希望能够上传png图像并在图像上保留水印图像。

0 个答案:

没有答案