如何在GIF图像中添加Watermark徽标?

时间:2014-02-03 11:55:54

标签: php image gif watermark

您好我想创建一个水印GIF图像。

请检查我的代码:

func.php

<?php
function allowed_image($file_name){
    $allow_set = array('gif','GIF');
    $file_ext =   (explode('.', $file_name));
    $end = end($file_ext);  
    return (in_array($end , $allow_set) === true) ? true : false;   
}

function watermark_image($file, $destination){
    $watermark = imagecreatefrompng('logo.png'); 
    $source = getimagesize($file); 

    $source_mime = $source['mime']; 
    image = imagecreatefromgif($file);

    imagecopy($image, $watermark, 70, 160, 0, 0, imagesx($watermark),imagesy($watermark));  
    imagepng($image, $destination); 
    imagedestroy($image); 
    imagedestroy($watermark);
}
?>

test.php的

<?php
include('func.php');
if (isset($_FILES['image'])){
     $file_name =       $_FILES['image']['name']; 
     $file_tmp =        $_FILES['image']['tmp_name'];   
     $name = explode('.', $file_name);
     if (allowed_image($file_name) === true){
        $file_name = time() .'.gif';
        watermark_image($file_tmp, 'upload/' . $file_name);       
     } else{
      echo '<p>Please upload only gif image.</p>';
     }
 }
?>
<form enctype="multipart/form-data" method="post">
    <input type="file" name="image" /><input type="submit" value="Go" name="submit" />
</form>

以上代码正常运作。但问题是,当我上传GIF图像时,它会创建水印图像,但GIF图像不会动画。

任何人都可以帮助我..如何使用动画GIF创建水印图像?

2 个答案:

答案 0 :(得分:0)

嗯,the PHP manual明确指出:

  

注意:   将动画GIF文件读入内存时,只在图像资源指针中返回第一帧。

在该页面的其中一个注释中,有人提到http://www.gdenhancer.com/是一个很好的替代品,可以使用动画GIF。我自己也没有任何经验。

答案 1 :(得分:0)

经过大量研究,最后我得到了制作水印gif图像的解决方案。

你需要想象力和魔力

试试这段代码会对你有所帮助:

exec("/usr/local/bin/convert mygif.gif null: watermark-logo.png -gravity SouthEast -layers composite -layers optimize mygif.gif 2>&1",$out,$returnval);

由于