用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - php代码库

PHP根据图片色界在不同位置加水印 防止水印遮挡图片主体部位

2014-12-07 作者: 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);


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...