`

根据图片色阶确定位置打水印

阅读更多

为了防止一个网上商铺的图片被别人轻易做处理后试用,就想法做批量水印处理——此类工具很多,但具体这个需求有几点一般软件搞不定的

 

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实现根据图片色界在不同位置加水印的方法

    这通常需要分析图片的色阶分布,找出最佳的加水印位置,但这里没有提供具体的色阶分析算法,可能需要根据实际需求自行实现。 此外,`add_wm_recurse()`函数用于递归处理目录下的所有图片,这在处理大量图片时非常...

    C#版的模拟PhotoShop处理图片色阶的程序源代码

    本项目涉及的是一个使用C#编程语言实现的模拟Photoshop处理图片色阶的程序。这个工具旨在复现Photoshop中的自动色阶功能,并提供了10%的参数设置,以调整图像的亮度和对比度,使得图像看起来更加鲜明和生动。 首先...

    1080p显示器的色阶测试图片

    用于测试1080p显示器的色阶显示。请下载后用看看图软件打开,并使用全品目显示

    用OpenCV实现Photoshop色阶调整算法

    对于每个像素,该函数将根据输入色阶映射到新的输出值。 3. `应用色阶调整`:这个方法会调用色阶调整函数,并更新图像数据。 `demo.cpp`文件很可能是包含一个示例程序,展示如何使用`Levels类`。在这个程序中,我们...

    ps色阶使用

    在Photoshop中,色阶(Levels)是一个强大的调整工具,用于改变图像的亮度范围和对比度,从而优化图像的整体视觉效果。以下是对“ps色阶使用”这一主题的详细讲解: 1. **打开图像和调出色阶面板** 在启动Adobe ...

    Ps去水印培训教程.ppt

    【Ps去水印培训教程】是一份详细的指导文档,旨在教授如何使用Photoshop软件去除图片中的水印,提升产品图片的质量,使其更具吸引力。本文档适用于两类产品的图像处理:普通产品和服装类产品。 对于普通产品,处理...

    PS去水印归类.pdf

    在Photoshop中去水印是一项常见的图像处理任务,尤其在网络资源中,许多图片都有各种形式的水印,如网站LOGO或网址等。本篇主要介绍几种PS快速去除水印的方法,适合不同类型的水印和图像背景。 1. **差值混合模式法...

    最强大的图片去水印工具

    拥有自动曝光、数码补光、白平衡、亮度对比度、饱和度、色阶、曲线、色彩平衡等一系列非常丰富的调图参数。最新开发的版本,对UI界面进行全新设计,拥有更好的视觉享受,且操作更流畅,更简单易上手。无需PS,您也能...

    phototshop-色阶

    phototshop-色阶

    java图片色阶调整和亮度调整代码示例

    Java 图片色阶调整和亮度调整代码示例 Java 图片色阶调整和亮度调整是图像处理中非常重要的一部分,通过调整图片的色阶和亮度,可以使图片呈现出不同的效果和氛围。在 Java 中,可以使用 BufferedImage 类来实现...

    PS去水印法实用.pdf

    在这个过程中,我们还学习了如何确定水印的原始颜色和透明度。我们可以通过猜测水印的颜色,例如红色(FF0000),然后调整透明度来找到最佳的值。最后,我们可以使用这些信息来恢复图像的原始状态。 PS 去水印法...

    自动色阶源码

    在图像处理领域,"自动色阶"是一种常见的技术,用于调整图像的亮度和对比度,使其在整个色调范围内分布更加均匀。这个"自动色阶源码"是用VB(Visual Basic)编写的,VB是一种流行的面向对象的编程语言,特别适合于...

    可调节色阶的shader功能和ps一样

    可调节色阶的shader功能和ps一样可调节色阶的shader功能和ps一样

    自动获得当前系统时间命名自动色阶

    自动色阶通常会根据数据的范围自动选择合适的颜色映射策略,确保色彩能有效地传达信息。在图像处理软件或数据分析工具中,这通常涉及到颜色映射表(Color Lookup Table, LUT)的调整和应用。DLL可能包含了对图像数据...

    Python-spectra简易色阶和颜色转换

    Python-spectra提供了创建自定义色阶的功能,允许开发者根据数据特点选择合适的颜色梯度,如线性、对数或者分段线性。这有助于增强数据的可读性和视觉吸引力。 四、应用实例 1. 图像处理:Python-spectra可以集成到...

    PHOTOSHOP色阶公开课教案.doc

    色阶是指用直方图描述整张图片的明暗信息。通过理解色阶,学生将掌握 Photoshop 后台处理颜色信息的基本原理。教师可以通过演示和讨论的方式,讲解色阶的调整方法,包括输入色阶调整和输出色阶调整。输入色阶调整...

    风光摄影的后期处理技巧——色阶剪切法

    最终,为了减少因为提亮暗部而产生的噪点,可以采用前期包围曝光的技巧,并将最亮的地面部分与色阶剪切后的图片进行合成。 色阶剪切法的整体流程可以概括为:去色散、边缘锐化、剪切色阶、边缘模糊以及合成降噪。这...

    二值图像数字水印技术的研究进展

    - **自适应嵌入策略**:根据图像的不同部分采用不同的水印嵌入强度,以达到最佳的隐蔽性和鲁棒性平衡。例如,在高频率变化区域(如纹理丰富区域)使用较弱的嵌入强度,在低频变化区域(如平坦区域)使用较强的嵌入...

    Photoshop色阶调整算法

    这个函数会根据这些参数调整图像的色阶。 通过这种方式,我们可以用OpenCV模拟Photoshop的色阶调整功能,实现对图像的亮度、对比度和色彩平衡的调整。这样的操作在图像增强、分析或者识别任务中非常常见,尤其是在...

Global site tag (gtag.js) - Google Analytics