为了防止一个网上商铺的图片被别人轻易做处理后试用,就想法做批量水印处理——此类工具很多,但具体这个需求有几点一般软件搞不定的
1. 判断加水印的位置(裤子)——根据室内、室外区别——主要根据一定范围的颜色RGB值处于裤子颜色范围内。
2. 文件夹递归并保持路径一致。
3. 因为有些图片当宽大于高时,需要逆时针旋转
以上需求我想用imagemagick + bash在linux下应该都可以实现的,可惜偶shell学得太差了。所以求助可爱可恨的java。。。
翻翻API还是用基于ImageMagick的好使——所以先在网上找找例子试用下——一试不当紧,JMagick.jar不管怎么搞libJMagick.so位置,就是报错。最后怒了——换Php的magickwand了。。。下载下来php.ini里加下就可以了。
贴代码。。。
<?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编程的时候, 很多时候需要对上传的图片加水印,来确定图片版权和出处. 但是,一般情况下加水印的位置是图片的...
基于C#开发的图片色阶处理工具,按照PhotoShop的自动色阶10%的参数处理图片色阶。开放源代码可直接嵌入其他程序中。
用于测试1080p显示器的色阶显示。请下载后用看看图软件打开,并使用全品目显示
拥有自动曝光、数码补光、白平衡、亮度对比度、饱和度、色阶、曲线、色彩平衡等一系列非常丰富的调图参数。最新开发的版本,对UI界面进行全新设计,拥有更好的视觉享受,且操作更流畅,更简单易上手。无需PS,您也能...
phototshop-色阶
用OpenCV C++实现Photoshop色阶调整算法, 包含Levels类和demo例程
ps色阶使用总结
可调节色阶的shader功能和ps一样可调节色阶的shader功能和ps一样
主要介绍了java图片色阶调整和亮度调整代码示例,具有一定参考价值,需要的朋友可以了解下。
提供一个DLL自动获得当前系统时间命名,提供算术加减,提供对图形进行自动色阶处理
好不容易找到的图像自动色阶源码,VB源码。
spectra-简易色阶和颜色转换
Photoshop087 自动色阶对比度和颜色帮你学会怎样调
C# 色阶心事控件 详细参照:http://write.blog.csdn.net/postedit
包括但不限于:图片水印、文字水印、系统水印、灰度化、二值化、自动色阶、伽玛校正、高斯模糊、锐化。更加强大的是,您可以设定只有符合某些条件的时,才执行特定的脚本。 调整图像分辨率(DPI):图像分辨率...
风光摄影中遇到的最大的问题就是光比太大。在本文中将介绍一种新的方法——“色阶剪切法”,以解决这一问题。
暗通道优先去雾代码, 直方图去雾代码, 自适应色阶去雾代码
基于mfc对话框,在对话框上插入两个图像控件,图像控件一显示原图,图像控件二,显示灰度图,或者轮廓图,或者自动色阶调整后的图片。并且在对话框上载入原图后,画出原图的像素中R值的直方图,图像控件二上显示灰度...
认识色阶和曲线.doc
PhotoShop的自动色阶功能C#实现