找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1765|回复: 0

[特效代码] PHP根据图片色阶确定位置打水印

[复制链接]
发表于 2013-4-14 09:41:26 | 显示全部楼层 |阅读模式 来自 中国–广东–湛江
直接分享源码
  1. <?php        function add_wm($nmw_water, $src_file, $output_file, $x, $y) {            if(file_exists($output_file))                return;                $w1 = MagickGetImageWidth($nmw_water);            $h1 = MagickGetImageHeight($nmw_water);                $nmw =NewMagickWand();            MagickReadImage($nmw, $src_file);                // 默认的加水印位置调整            $lt_w = 50;            $lt_h = 50;                if($x == 0){                $w = MagickGetImageWidth($nmw);                $h = MagickGetImageHeight($nmw);                    $x = $w;                $y = $h;            }else{                // 根据具体情况调整                $lt_w = 30;                $lt_h = 40;            }                MagickCompositeImage($nmw, $nmw_water, MW_OverCompositeOp, $x - $w1 - $lt_w, $y - $h1 - $lt_h);            MagickWriteImage($nmw, $output_file);                DestroyMagickWand($nmw);                }            // 还是groovy的eachFileRecurse好用啊        function add_wm_recurse($nmw_water, $to_dir, $output_dir, $arr) {            $dp = dir($to_dir);            while($file=$dp->read()){                if($file != '.' && $file != '..'){                    if(is_dir($to_dir . '/' . $file)){                        mkdir($output_dir . '/' . $file);                        add_wm_recurse($nmw_water, $to_dir . '/' . $file, $output_dir . '/' . $file, $arr);                    }else{                        if(!array_key_exists($to_dir . '/' . $file, $arr)){                            continue;                        }                            $sub_arr = $arr[$to_dir . '/' . $file];                        if($sub_arr){                            $x = intval($sub_arr[0]);                            $y = intval($sub_arr[1]);                            add_wm($nmw_water, $to_dir . '/' . $file, $output_dir . '/' . $file, $x, $y);                        }                    }                }            }            $dp->close();        }            $to_dir = './resized';        $output_dir = './output';            // 这个是我用java的ImageIO遍历图片像素获取的符合裤子颜色的区域的坐标array(posX, posY)        $arr = array(            array(50, 50)        );            $water = './water.png';        $nmw_water =NewMagickWand();        MagickReadImage($nmw_water, $water);            add_wm_recurse($nmw_water, $to_dir, $output_dir, $arr);            DestroyMagickWand($nmw_water);    ?>   
复制代码

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2024-11-25 17:12 , Processed in 0.045501 second(s), 9 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表