欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

TinyMCE插件:Filemanager [4.x-6.x] 图片自动添加水印

程序员文章站 2022-06-03 08:16:35
filemanager的图片上传功能都遵循一个原则 【图片上传成功 -> 添加水印】 不论是 4.x 6.x 或者是 9.x ......

上传图片程序(filemanager/upload.php)

if (!empty($_files) && $upload_files)有一个move_uploaded_file()函数,正是上传图片的源头方法,在他成功运行将图片成功上传后,再加入水印方法即可。

if (!empty($_files) && $upload_files) {
    ....

    move_uploaded_file($tempfile, $targetfile);

    //一定要在move_uploaded_file()之后添加水印,因为之前图片还没有上传
    //===========================水印图片.s
    $src_path = 'mark.png';
    $dst_path = $targetfile;
    //创建图片的实例
    $dst = imagecreatefromstring(file_get_contents($dst_path));
    $src = imagecreatefromstring(file_get_contents($src_path));
    //获取水印图片的宽高
    list($src_w, $src_h) = getimagesize($src_path);
    //获取要加水印图片的宽高
    list($dst_w, $dst_h) = getimagesize($dst_path);
    //将水印图片复制到目标图片上,最后个参数50是设置透明度,这里实现半透明效果
    //imagecopymerge($dst, $src, 10, 10, 0, 0, $src_w, $src_h, 50);
    //如果水印图片本身带透明色,则使用imagecopy方法
    imagecopy($dst, $src, ($dst_w - $src_w - 10), ($dst_h - $src_h - 10), 0, 0, $src_w, $src_h);
    //输出图片
    list($dst_w, $dst_h, $dst_type) = getimagesize($dst_path);
    switch ($dst_type) {
        case 1://gif
            header('content-type: image/gif');
            imagegif($dst, $dst_path);
            break;
        case 2://jpg
            header('content-type: image/jpeg');
            imagejpeg($dst, $dst_path, 100);
            break;
        case 3://png
            header('content-type: image/png');
            imagepng($dst, $dst_path, 100);
            break;
        default:
            break;
    }
    
    imagedestroy($dst);
    imagedestroy($src);
    //===========================水印图片.e

    ....
}