Welcome 微信登录

首页 / 网页编程 / PHP / PHP根据图片色界在不同位置加水印的方法

本文实例讲述了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);
希望本文所述对大家的php程序设计有所帮助。