php - 创建img水印

时间:2017-03-14 12:46:20

标签: php gd watermark

<img id='imgt' src='../img/crop00.jpg' alt='img'>
<img id='imgtest' src='../img/crop00.jpg' alt='img'>

js

...
$.ajax({
    url: 'pro20.php',
    type: 'post',
    data: {...},
    success: function(data) {
        $('#imgtest').attr('src', data);
    }
});

php

error_reporting(E_ALL);
ini_set('display_errors', 1);

已启用GD库 - 使用print_r(gd_info());

进行检查

pro20.php

我正在尝试运行 this 代码

$stamp = imagecreatefrompng('img/wmark.png');
$im = imagecreatefromjpeg('img/test.jpg');

$marge_right = 10;
$marge_bottom = 10;
$sx = imagesx($stamp);
$sy = imagesy($stamp);

imagecopy($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp));

header('Content-type: image/png');
imagepng($im);
imagedestroy($im);

echo imagepng($im);  // my added line 28

结果:
- #imgtest为空白,
- 在文件系统中没有新的img创建
- 错误日志:

[:error] [pid 2736:tid 1580] [client ::1:59185] PHP Warning: imagepng(): supplied resource is not a valid Image resource in ... pro20.php on line 28,

1 个答案:

答案 0 :(得分:-2)

代码没有问题。问题可能是一个(或两个图像)没有正确加载:

$stamp = imagecreatefrompng('img/wmark.png');
$im = imagecreatefromjpeg('img/test.jpg');

检查img/wmark.pngimg/test.jpg是否存在并且是有效图像。

我已经测试了你的代码(稍作修改):

<?php

$stamp = imagecreatefrompng('wmark.png');
$im = imagecreatefromjpeg('img.jpg');

$marge_right = 10;
$marge_bottom = 10;
$sx = imagesx($stamp);
$sy = imagesy($stamp);

imagecopy($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp));

header('Content-type: image/png');
imagepng($im);
imagedestroy($im);

echo imagepng($im);

我得到了这个:

enter image description here

您的代码没有错。可能的问题是您的图像可能不是有效的png / jpg图像。请验证这一点。