我想在正在上传的图片旁边创建一个新的水印文件。 我提出了这个代码,但它没有做任何事情。 PHP没有返回错误。有人知道我做错了吗?
function watermark_image(){
$name = basename($_FILES['file_upload']['name']);
// Load the watermark and the photo to apply the watermark to
$stamp = imagecreatefrompng('watermarkMQ.png');
$im = imagecreatefromjpeg($name);
// Set the margins for the stamp and get the height/width of the stamp image
$marge_right = 0;
$marge_bottom = 0;
$sx = imagesx($stamp);
$sy = imagesy($stamp);
// Copy the stamp image onto our photo using the margin offsets and the photo
// width to calculate positioning of the stamp.
imagecopy($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp));
// Save and free memory
imagejpeg($im, 'wm_' . $name);
imagedestroy($im);
}
答案 0 :(得分:0)
你有多个错误:
$name = basename($_FILES['file_upload']['name']);
^^^^^^^^
该参数是USER机器上文件的名称。上传到您服务器的文件实际上位于['tmp_name']
。
然后您无法检查是否成功 - PHP不会“返回错误”。但GD函数 DO 在失败时返回布尔值false,您不需要:
$im = imagecreatefromjpeg($name);
if ($im === false) {
die("Failed to open $name");
}
永远不要假设处理外部资源的操作成功。总是假设失败,检查失败,并将成功视为一个惊喜。