php分析图片中水印的位置,PHP根据图片色界在不同位置加水印的方法

本文介绍了如何使用Groovy实现图像加水印功能,通过MagickWand库操作图片,针对特定区域应用预设的水印。重点在于递归遍历文件夹,根据坐标参数智能调整水印位置。同时,展示了从Java中获取图片像素信息并应用到水印过程的应用实例。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值