批量修改图片格式

近日闲来无事看一些资料,一些有用的资料都是影印版的,想在上面做笔记无从下手,想到了把这些转换成word,但影印版的pdf转换成word非常麻烦,需要把影印的资料从pdf中提取出来,然后再用汉王等软件把提取出来的图片转换成word。但转换工具对图片格式有要求,比如:bmp、rtf等,而得到图片都是jpg格式的,有500多张需要全部转换。第一时间想到了在网上找转换图片格式的软件,寻找过程中发现有人通过Java代码实现了这一功能。这让一直在用Java的我汗颜:我怎么没想到呢,我也要写出来(虽然大多数情况下不要重复发明轮子)。其实也很简单,只需要简单的几句话就行,但发现写好不容易,只是改了文件的后缀名,并没有真正修改文件格式

 

ChangeFileFormat.java

import java.io.File;

public class ChangeFileFormat {

	public static void main(String args[]) {
		long start = System.currentTimeMillis();
		String format1 = ReadProperties.getProperty("beforeFormat");
		String format2 = ReadProperties.getProperty("afterFormat");
		String fileName = ReadProperties.getProperty("dir");
		changeFormat(fileName, format1, format2);
		long end = System.currentTimeMillis();
		System.out.println("共耗时:" + (end - start));
	}

	public static void changeFormat(String fileName, String beforeFormat,
			String afterFormat) {
		File file = new File(fileName);
		if (file.exists()) {
			String fileRoot = file.getAbsolutePath();   // D:\1
			String[] arr = file.list(); // 取得目录下所有的文件( 数组的形式)
			if (arr != null && arr.length > 0) { // 遍历数组
				for (int i = 0; i < arr.length; i++) {
					if (arr[i].substring(arr[i].length() - 3, arr[i].length())
							.equals(beforeFormat)) {

						File tempFile = new File(fileRoot + "//" + arr[i]); // 获得某个具体的文件
						// 修改格式
						String str = arr[i].replaceAll(beforeFormat,
								afterFormat);
						boolean b = tempFile.renameTo(new File(fileRoot + "//"
								+ str));
						// 判断是否成功
						if (b) {
							System.out.println("ok");
						} else {
							System.out.println("wrong");
						}
					}

				}
			}
		} else {
			System.out.println("所指定的目录不存在,将为你创建指定的目录");
			file.mkdir();
		}

	}
}

 

 ReadProperties.java

import java.io.IOException;
import java.util.Properties;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class ReadProperties {

	private static final String fileName = "resource.properties";
	private static final Properties properties = new Properties();
	private static final Log log = LogFactory.getLog(ReadProperties.class);  //需要commons-logging-1.1.1.jar

	static {
		try {
			//从输入流中读取属性列表(键和元素对)
			properties.load(ReadProperties.class.getResourceAsStream(fileName));
		} catch (IOException e) {
			log.error("读取配置文件出错:	" + fileName);
			e.printStackTrace();
		}
	}

	public static String getProperty(String key) {
		// getProperty(String key) ----- 用指定的键在此属性列表中搜索属性
		return properties.getProperty(key) != null ? properties.getProperty(key) : null;
	}
}

 

resource.properties

#转换前的格式
beforeFormat=jpg
#转换后的格式
afterFormat=bmp
#文件目录
dir=d:/2

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值