PHP程序员站--PHP编程开发平台
 当前位置:主页 >> PHP高级编程 >> 高级应用 >> 

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

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

来源:互联网  作者:  发布时间:2010-12-29
PHP根据图片色阶确定位置打水印源码分享 ?php function add_wm(

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实现
PHP实例解析:实现给上传图片加水印图案
ImageTTFText函数实现图像加文字水印
Tags: php   图片   色阶   水印  
最新文章
推荐阅读
月点击排行榜
PHP程序员站 Copyright © 2007-2010,PHPERZ.COM All Rights Reserved 粤ICP备07503606号