| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
lpkde
10年前发布

依据图片色界在不同位置加水印的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);