在PHP上传时创建新的水印文件

时间:2014-10-20 15:26:54

标签: php file

我想在正在上传的图片旁边创建一个新的水印文件。 我提出了这个代码,但它没有做任何事情。 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);
}

1 个答案:

答案 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");
}

永远不要假设处理外部资源的操作成功。总是假设失败,检查失败,并将成功视为一个惊喜。