为了防止一个网上商铺的图片被别人轻易做处理后试用,就想法做批量水印处理——此类工具很多,但具体这个需求有几点一般软件搞不定的
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);
?>
分享到:
相关推荐
这通常需要分析图片的色阶分布,找出最佳的加水印位置,但这里没有提供具体的色阶分析算法,可能需要根据实际需求自行实现。 此外,`add_wm_recurse()`函数用于递归处理目录下的所有图片,这在处理大量图片时非常...
本项目涉及的是一个使用C#编程语言实现的模拟Photoshop处理图片色阶的程序。这个工具旨在复现Photoshop中的自动色阶功能,并提供了10%的参数设置,以调整图像的亮度和对比度,使得图像看起来更加鲜明和生动。 首先...
用于测试1080p显示器的色阶显示。请下载后用看看图软件打开,并使用全品目显示
对于每个像素,该函数将根据输入色阶映射到新的输出值。 3. `应用色阶调整`:这个方法会调用色阶调整函数,并更新图像数据。 `demo.cpp`文件很可能是包含一个示例程序,展示如何使用`Levels类`。在这个程序中,我们...
在Photoshop中,色阶(Levels)是一个强大的调整工具,用于改变图像的亮度范围和对比度,从而优化图像的整体视觉效果。以下是对“ps色阶使用”这一主题的详细讲解: 1. **打开图像和调出色阶面板** 在启动Adobe ...
【Ps去水印培训教程】是一份详细的指导文档,旨在教授如何使用Photoshop软件去除图片中的水印,提升产品图片的质量,使其更具吸引力。本文档适用于两类产品的图像处理:普通产品和服装类产品。 对于普通产品,处理...
在Photoshop中去水印是一项常见的图像处理任务,尤其在网络资源中,许多图片都有各种形式的水印,如网站LOGO或网址等。本篇主要介绍几种PS快速去除水印的方法,适合不同类型的水印和图像背景。 1. **差值混合模式法...
拥有自动曝光、数码补光、白平衡、亮度对比度、饱和度、色阶、曲线、色彩平衡等一系列非常丰富的调图参数。最新开发的版本,对UI界面进行全新设计,拥有更好的视觉享受,且操作更流畅,更简单易上手。无需PS,您也能...
phototshop-色阶
Java 图片色阶调整和亮度调整代码示例 Java 图片色阶调整和亮度调整是图像处理中非常重要的一部分,通过调整图片的色阶和亮度,可以使图片呈现出不同的效果和氛围。在 Java 中,可以使用 BufferedImage 类来实现...
在这个过程中,我们还学习了如何确定水印的原始颜色和透明度。我们可以通过猜测水印的颜色,例如红色(FF0000),然后调整透明度来找到最佳的值。最后,我们可以使用这些信息来恢复图像的原始状态。 PS 去水印法...
在图像处理领域,"自动色阶"是一种常见的技术,用于调整图像的亮度和对比度,使其在整个色调范围内分布更加均匀。这个"自动色阶源码"是用VB(Visual Basic)编写的,VB是一种流行的面向对象的编程语言,特别适合于...
可调节色阶的shader功能和ps一样可调节色阶的shader功能和ps一样
自动色阶通常会根据数据的范围自动选择合适的颜色映射策略,确保色彩能有效地传达信息。在图像处理软件或数据分析工具中,这通常涉及到颜色映射表(Color Lookup Table, LUT)的调整和应用。DLL可能包含了对图像数据...
Python-spectra提供了创建自定义色阶的功能,允许开发者根据数据特点选择合适的颜色梯度,如线性、对数或者分段线性。这有助于增强数据的可读性和视觉吸引力。 四、应用实例 1. 图像处理:Python-spectra可以集成到...
色阶是指用直方图描述整张图片的明暗信息。通过理解色阶,学生将掌握 Photoshop 后台处理颜色信息的基本原理。教师可以通过演示和讨论的方式,讲解色阶的调整方法,包括输入色阶调整和输出色阶调整。输入色阶调整...
最终,为了减少因为提亮暗部而产生的噪点,可以采用前期包围曝光的技巧,并将最亮的地面部分与色阶剪切后的图片进行合成。 色阶剪切法的整体流程可以概括为:去色散、边缘锐化、剪切色阶、边缘模糊以及合成降噪。这...
- **自适应嵌入策略**:根据图像的不同部分采用不同的水印嵌入强度,以达到最佳的隐蔽性和鲁棒性平衡。例如,在高频率变化区域(如纹理丰富区域)使用较弱的嵌入强度,在低频变化区域(如平坦区域)使用较强的嵌入...
这个函数会根据这些参数调整图像的色阶。 通过这种方式,我们可以用OpenCV模拟Photoshop的色阶调整功能,实现对图像的亮度、对比度和色彩平衡的调整。这样的操作在图像增强、分析或者识别任务中非常常见,尤其是在...