`
j夫子
  • 浏览: 92561 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

给寸照换背景__用java处理图片(jpg,png,gif...)的背景颜色

    博客分类:
  • java
 
阅读更多

今天老师想让我帮忙把她们200多张寸照换成白底的,这些寸照里面多为蓝色底,红色底。

用ps??不!

用java!!

对,我第一反应就是用java,到网上找到了一个获得图片像素的源码。动手改了下,就编出来了,200多张照片的处理就用了半分钟。

 

由于实在是忘记了这个源码是哪儿找的了,貌似好几个网站上面都有,所以也就不标明作者是谁了....

 

 

/**
 * 功能:
 * 将蓝底寸照批量转换为白底
 * 主要是可以几百张,几千张地处理
 * @author 赵俊夫
 *
 */
public class ImageColorDemo {
	
	public static void main(String args[]) throws IOException {
		/**
		 * 要处理的图片目录
		 */
		File dir = new File("d:/d4");
		/**
		 * 列出目录中的图片,得到数组
		 */
		File[] files = dir.listFiles();
		/**
		 * 遍历数组
		 */
		for(int x=0;x<files.length;x++){
			/**
			 * 定义一个RGB的数组,因为图片的RGB模式是由三个 0-255来表示的 比如白色就是(255,255,255)
			 */
			int[] rgb = new int[3];
			/**
			 * 用来处理图片的缓冲流
			 */
			BufferedImage bi = null;
			try {
				/**
				 * 用ImageIO将图片读入到缓冲中
				 */
				bi = ImageIO.read(files[x]);
			} catch (Exception e) {
				e.printStackTrace();
			}
			/**
			 * 得到图片的长宽
			 */
			int width = bi.getWidth();
			int height = bi.getHeight();
			int minx = bi.getMinX();
			int miny = bi.getMinY();
			System.out.println("正在处理:"+files[x].getName());
			/**
			 * 这里是遍历图片的像素,因为要处理图片的背色,所以要把指定像素上的颜色换成目标颜色
			 * 这里 是一个二层循环,遍历长和宽上的每个像素
			 */
			for (int i = minx; i < width; i++) {
				for (int j = miny; j < height; j++) {
					// System.out.print(bi.getRGB(jw, ih));
					/**
					 * 得到指定像素(i,j)上的RGB值,
					 */
					int pixel = bi.getRGB(i, j);
					/**
					 * 分别进行位操作得到 r g b上的值
					 */
					rgb[0] = (pixel & 0xff0000) >> 16;
					rgb[1] = (pixel & 0xff00) >> 8;
					rgb[2] = (pixel & 0xff);
					/**
					 * 进行换色操作,我这里是要把蓝底换成白底,那么就判断图片中rgb值是否在蓝色范围的像素
					 */
					if(rgb[0]<155&&rgb[0]>0 && rgb[1]<256&&rgb[1]>105 && rgb[2]<256&&rgb[2]>105 ){
						/**
						 * 这里是判断通过,则把该像素换成白色
						 */
						bi.setRGB(i, j, 0xffffff);
					}
					
				}
			}
			System.out.println("\t处理完毕:"+files[x].getName());
			System.out.println();
			/**
			 * 将缓冲对象保存到新文件中
			 */
			FileOutputStream ops = new FileOutputStream(new File("d:/d5/"+x+".jpg"));
			ImageIO.write(bi,"jpg", ops);
			ops.flush();
			ops.close();
			}
	}

}

 

 

 

 

1
4
分享到:
评论
4 楼 南瓜静涵 2012-05-30  
嘿嘿 这个不错 有想法
3 楼 nanali32 2012-04-25  
mkdirs()方法是目的是:创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。如果是多层文件夹是一样可以用的,不存在的父目录一样自动创建。
能想到这种方法替换背景颜色还是不错的!
2 楼 j夫子 2012-04-25  
nanali32 写道
最后输出文件如果D盘下不存在文件夹d5就会出现异常的,故要这样写:
String path = "d:/d5/" + x + ".jpg";
File file = new File(path);
file.getParentFile().mkdirs();//创建d5文件夹
还有一个问题如果图像(非背景)里包含有蓝色也会变成白色了吧?


1 嗯 考虑到程序的完善  确实是要处理文件夹不存在 不过代码可以写更好点 把dir和filename用两个字符串存储 因为如果是多层的文件夹 你的代码也不能用了。。 
2 当然在这段代码里面所有符合判断范围的颜色都会被替换
我昨天也考虑过 加点过滤条件,但是没有好的解决办法。不过昨天处理寸图还是够用了。不知道这位兄弟有无好办法。。
1 楼 nanali32 2012-04-25  
最后输出文件如果D盘下不存在文件夹d5就会出现异常的,故要这样写:
String path = "d:/d5/" + x + ".jpg";
File file = new File(path);
file.getParentFile().mkdirs();//创建d5文件夹
还有一个问题如果图像(非背景)里包含有蓝色也会变成白色了吧?

相关推荐

    java实现多张png,jpg等各种图片文件转动态gif图

    2. **读取图片文件**:使用Java的`FileInputStream`读取PNG或JPG文件,然后用gif4j库提供的API将其转化为`GIF89aImage`对象。 3. **创建GIF动画**:初始化一个`GIF89a`对象,这将是最终的GIF动画容器。你可以设置...

    java处理图片大小等比例缩放,自定义修改图片大小,截取,水印

    在Java编程语言中,处理图片是一项常见的任务,包括调整图片大小、等比例缩放、裁剪、压缩以及添加水印等。以下将详细介绍这些知识点: 1. **等比例缩放图片**: 在Java中,我们可以使用`java.awt.image....

    Java gif图片转换为jpg格式

    在Java中实现GIF格式图片转换为JPEG格式图片的过程涉及几个关键的Java类和方法,主要包括BufferedImage类、ImageIO类以及相关的图形处理技术。下面详细阐述这些知识点: 首先,BufferedImage类是Java中用于处理图像...

    java生成透明图片

    在Java编程语言中,生成透明图片涉及到图像处理和颜色模型的知识。Java提供了丰富的API来处理图像,例如在`java.awt`和`javax.imageio`包中。本文将深入探讨如何在Java中创建并保存带有透明度的PNG或GIF图片。 首先...

    simpleimage-1.2.3.jar

    SimpleImage是阿里巴巴开源的一款轻量级的Java图片处理库,主要服务于那些对图片处理有需求但不想引入庞大如Apache Commons Imaging或ImageMagick等复杂库的项目。它提供了一系列简洁易用的API,涵盖了图片的基本...

    Java合成照片

    3. **图像读取与写入**:使用`ImageIO`类的静态方法`read()`和`write()`可以读取和保存不同格式的图像文件,如JPEG、PNG、GIF等。 4. **图像合成基础操作**: - **合并图像**:通过`Graphics2D`对象,我们可以将一...

    图片写入PDF pdf itext image test

    在使用iText处理图片时,我们需要理解几个关键概念: 1. **Image对象**:iText中的`com.itextpdf.text.Image`类是用于表示PDF文档中图像的核心对象。你可以从文件、URL或字节数组中加载图像,并将其转换为这个对象...

    shopxx_src.zip

    4. **图片资源**:可能包括.png、.jpg、.gif等格式的图片,用于网站的视觉设计。 5. **字体文件**:.ttf或.otf,用于自定义网页字体。 6. **服务器脚本**:如PHP、Node.js或Python脚本,处理服务器端逻辑。 7. **...

    img和jar包,工具类.rar

    在IT行业中,我们经常需要处理各种类型的文件,其中包括图像文件(如.jpg或.png)和Java Archive(.jar)文件。这些文件在不同的场景下扮演着关键角色,特别是在数据操作和软件开发中。以下是对"img和jar包,工具类....

    FEINIAO.zip_feiniao_飞鸟源码_飞鸟源码论坛

    1. 图像资源:包括游戏背景、角色(飞鸟)、木桩、得分界面等的图片文件,这些图片可能以.png或.jpg格式存在,用于构建游戏的视觉效果。 2. 音频资源:可能包含游戏的背景音乐、点击音效、得分音效等,以.mp3或.ogg...

    制作动态二维码.docx

    通过该项目,用户不仅可以生成静态二维码,还可以制作动态二维码,并支持自定义样式,如添加背景图片、调整颜色等。 #### 三、环境搭建 要在项目中使用BitQR-Code,首先需要将QRCode.jar库添加到项目的依赖中。...

    Android旅游APP源码.zip

    1. 图片资源:defaultpic.gif、screenshot.gif、15115.jpg、login-bg.jpg、logo.png 这些图片文件是应用程序中的资源,通常用于UI设计,包括默认图片、截图、界面背景和logo。在Android开发中,开发者会将这些资源...

    Android五子棋项目源码.zip

    首先,项目的资源文件包括`defaultpic.gif`、`screenshot.gif`、`15115.jpg`、`login-bg.jpg`和`logo.png`,这些通常是用于应用程序的图形资源,如启动画面、背景图像或应用图标。开发者需要了解Android的资源管理...

    xxxtoxxx工具

    2. **图像文件转换**:例如从.jpg到.png,或者从.bmp到.gif,图像格式转换可以适应不同的应用场景,如网页设计、社交媒体分享等,同时也能调整文件大小以节省存储空间。 3. **音频文件转换**:如从.mp3到.wav,或者...

    android二维图形

    1. 使用项目资源中的图像:将PNG、JPG或GIF格式的图像文件放入res/drawable/目录下,然后通过资源ID引用它。例如,my_image.png可以通过R.drawable.my_image引用。在运行时,Android可能会自动优化这些图像以节省...

    新版Android开发教程.rar

    支持墙纸格式: JPG 、 BMP 、 PNG 和 GIF ;铃声 (MP3 、 AAC 、 AAC+ 和 WMA) 。 接入技术 蓝牙 (class 1) ;四频 (850 , 900 , 1800 , 1900) ;支持 3G , 802.11b 和 802.11g 。----------------------------...

    Java实现拖拽文件上传dropzone.js的简单使用示例代码

    acceptedFiles: ".jpg,.jpeg,.png,.gif,.xls,.txt,.sql,.rar,.mkv", paramName: 'file', init: function() { // 初始化时的事件 } }); ``` 这里的配置项包括: - `url`: 服务器端处理文件上传的 URL。 - `...

    图片

    图片文件可以是多种格式,如JPEG(.jpg或.jpeg)、PNG(.png)、GIF(.gif)、BMP(.bmp)等。JPEG适用于高质量的静态图像,常用于照片,因为它提供了良好的压缩比;PNG则适用于需要透明背景或无损压缩的图像,比如...

    Android资源文件(学习android必备)

    - **描述**:基本的位图图像,支持PNG、JPG和GIF格式。PNG是最推荐使用的格式,因为它支持透明度且压缩效率高。 - **位置**:`res/drawable/xxx.png`(文件名即资源ID) - **引用**: - Java:`R.drawable.xxx` - ...

Global site tag (gtag.js) - Google Analytics