皮皮网

【攻击溯源源码】【进化算法源码】【收音系统源码】php 水印 源码

2024-11-23 03:11:07 来源:斗鱼直播代理源码

1.PHP如何根据色阶不同添加水印

php 水印 源码

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 = ;

       $lt_h = ;

       if($x == 0){

       $w = MagickGetImageWidth($nmw);

       $h = MagickGetImageHeight($nmw);

       $x = $w;

       $y = $h;

       }else{

       // 根据具体情况调整

       $lt_w = ;

       $lt_h = ;

       }

       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(, )

       );

       $water = './water.png';

       $nmw_water =NewMagickWand();

       MagickReadImage($nmw_water, $water);

       add_wm_recurse($nmw_water, $to_dir, $output_dir, $arr);

       DestroyMagickWand($nmw_water);

>

       补充:

       PHP图像处理模块 MagickWand用法

       MagickWand 是一个PHP的模块,用来访问 ImageMagick 的印源攻击溯源源码图像处理库。下面是印源进化算法源码一个使用 MagicWand 的代码片段:

       $magick_wand=NewMagickWand();

       MagickReadImage($magick_wand,'rose.jpg');

       $drawing_wand=NewDrawingWand();

       DrawSetFont($drawing_wand,"/usr/share/fonts/bitstream-vera/Vera.ttf");

       DrawSetFontSize($drawing_wand,);

       DrawSetGravity($drawing_wand,MW_CenterGravity);

       $pixel_wand=NewPixelWand();

       PixelSetColor($pixel_wand,"white");

       DrawSetFillColor($drawing_wand,$pixel_wand);

       if (MagickAnnotateImage($magick_wand,$drawing_wand,0,0,0,"Rose") != 0)

       {

       MagickEchoImageBlob( $magick_wand );

       }

       else

       {

       echo MagickGetExceptionString($magick_wand);

       }

>

       安装方法:

       1. 下载 php_magickwand_q_st.dll for 5.2.x

       2. 将其放在PHP的扩展目录

       3. 在php.ini文件总增加 extension=php_magickwand_q_st.dll

       4. 重新启动apache