龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

根据图片色阶确定位置打水印

时间:2014-07-22 14:52来源: 作者: 点击:
分享到:
<无详细内容>
    <?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);  
    ?>  
精彩图集

赞助商链接