Java > TOOL

package jp.co.tool;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;

import javax.imageio.ImageIO;

/**
* 指定したファイルに記載されたリストからファイル名の入った画像ファイルを生成します。<br>
* 生成可能な画像は、JPG、GIF、PNG、BMP
*/
public class ImageGenerator {

/** パス区切り文字 */
static final String SEPARATOR = File.separator;

/** 入力ファイル格納フォルダ */
private String inputDir = "C:\\generatorImage\\";
/** 入力ファイル名 */
private String inputFile = "fileList.txt";
/** 出力ファイル格納フォルダ */
private String outputDir = "C:\\generatorImage\\";

/** 生成画像の横サイズ */
int imageWidth = 400;
/** 生成画像の縦サイズ */
int imageHeight = 300;

/** 生成ファイル名の変換(true:大文字、小文字、falseそのまま) */
private boolean changeFileNameFlg = false;
/** 生成ファイル名の変換で(true:大文字、false:小文字、changeFileNameFlgがtrueであることが前提) */
private boolean lowerUpperFlg = true;

public static void main(String[] args) {

	System.out.println("-- Start ImageGenerator --");

	ImageGenerator generator = new ImageGenerator();
	if (generator.init()) {
		generator.readList();
		generator.generateImageFile();
	}

	System.out.println("-- End ImageGenerator --");

}

private List<FileInfo> fileList = new ArrayList<FileInfo>();

public ImageGenerator() {

}

public boolean init() {

	System.out.println("-- init start --");

	boolean ret = true;

	if (inputDir.isEmpty()) {
		System.out.println("not set inputDir");
		ret = false;
	} else {
		System.out.println("inputDir is " + inputDir);
	}
	if (inputFile.isEmpty()) {
		System.out.println("not set inputFile");
		ret = false;
	} else {
		System.out.println("inputFile is " + inputFile);
	}
	// 出力フォルダが指定されていない場合、入力フォルダと同じ場所を指定
	if (outputDir.isEmpty()) {
		outputDir = inputDir;
		System.out.println("outputDir is inputDir");
	} else {
		System.out.println("outputDir is " + outputDir);
	}

	if (!ret) {
		System.out.println("-- Error init --");
	}

	System.out.println("-- init end --");

	return ret;

}

public void readList() {

	System.out.println("-- readList start --");

	// 読み込みファイルの行リスト
	List<String> readFileList = new ArrayList<String>();

	// ファイルのリストを読み込み
	try {
		BufferedReader br = null;

		// 入力ファイルの読込み
		if (!inputDir.endsWith(SEPARATOR)) {
			inputDir = inputDir + SEPARATOR;
		}
		File fileList = new File(inputDir + inputFile);
		FileReader filereader = new FileReader(fileList);
		br = new BufferedReader(filereader);

		String str = br.readLine();
		while (str != null) {
			if (!str.isEmpty()) {
				readFileList.add(str);
			}
			str = br.readLine();
		}

		//			// 手でゴリゴリ
		//			readFileList.add("image01.jpg");
		//			readFileList.add("image02.jpg");
		//			readFileList.add("naikan\\image03.jpg");
		//			readFileList.add("gaikan\\01\\image04.jpg");
		//			readFileList.add("image05.jpg");

		br.close();

	} catch (Exception e) {
		System.out.println(e.getStackTrace());
	} finally {
	}

	for (String file : readFileList) {

		// ファイル名とファイルパスの取得
		FileInfo createFile = new FileInfo();
		if (file.lastIndexOf(SEPARATOR) > 0) {
			createFile.setFileName(file.substring(file.lastIndexOf(SEPARATOR) + 1));
			createFile.setFilePath(file.substring(0, file.lastIndexOf(SEPARATOR)));
		} else {
			createFile.setFileName(file);
			createFile.setFilePath("");
		}

		// ファル拡張子の取得
		createFile.setFileExt(createFile.getFileName().substring(createFile.getFileName().lastIndexOf(".") + 1,
				createFile.getFileName().length()).toLowerCase());
		fileList.add(createFile);

	}

	System.out.println("-- readList end --");

}

public void generateImageFile() {

	System.out.println("-- generateImageFile start --");

	for (FileInfo fileInfo : fileList) {
		try {
			//受け取った文字列を画像化
			BufferedImage image = new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_INT_RGB);
			Graphics2D g2d = image.createGraphics();
			g2d.setBackground(Color.DARK_GRAY);
			g2d.clearRect(0, 0, imageWidth, imageHeight);
			g2d.setColor(Color.WHITE);
			g2d.drawString(fileInfo.getFileName(), 7, 17);

			if (fileInfo.getFilePathList().length > 0) {
				String pathStr = outputDir;
				for (String path : fileInfo.getFilePathList()) {
					pathStr = pathStr + SEPARATOR + path;
					File newdir = new File(pathStr);
					newdir.mkdir();
				}
			}

			// 出力ファイル名の変換(そのまま、大文字、小文字)
			String fileName = fileInfo.getFileName();
			if (changeFileNameFlg) {
				if (lowerUpperFlg) {
					fileName = fileName.toUpperCase();
				} else {
					fileName = fileName.toLowerCase();
				}
			}

			boolean writeRet = false;
			if (fileInfo.getFileExt().equals("jpg")) {
				writeRet = ImageIO.write(image, "JPEG",
						new File(outputDir + fileInfo.getFilePath() + fileName));
			} else if (fileInfo.getFileExt().equals("gif")) {
				writeRet = ImageIO.write(image, "GIF",
						new File(outputDir + fileInfo.getFilePath() + fileName));
			} else if (fileInfo.getFileExt().equals("png")) {
				writeRet = ImageIO.write(image, "PNG",
						new File(outputDir + fileInfo.getFilePath() + fileName));
			} else if (fileInfo.getFileExt().equals("bmp")) {
				writeRet = ImageIO.write(image, "BMP",
						new File(outputDir + fileInfo.getFilePath() + fileName));
			}
			if (!writeRet) {
				System.out.println(fileInfo.getFileName() + " is ImageIO.write error");
			}

		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	System.out.println("-- generateImageFile end --");

}

class FileInfo {

	/** ファイルパス */
	private String[] filePathList;
	/** ファイル名 */
	private String fileName;
	/** 拡張子 */
	private String fileExt;

	/**
	 * コンストラクタ
	 */
	public FileInfo() {
		// パス、ファイル名の初期化
		setFilePathList(new String[0]);
		setFileName("");
		setFileExt("");
	}

	/**
	 * @return filePath
	 */
	public String[] getFilePathList() {
		return filePathList;
	}

	/**
	 * @param filePath
	 *            セットする filePath
	 */
	public void setFilePathList(String[] filePath) {
		this.filePathList = filePath;
	}

	public void setFilePath(String path) {

		List<String> list = new ArrayList<String>();

		String checkPath = path;
		while (!checkPath.isEmpty()) {
			String str = "";
			if (checkPath.indexOf(SEPARATOR) > 0) {
				str = checkPath.substring(0, checkPath.indexOf(SEPARATOR));
				checkPath = checkPath.substring(checkPath.indexOf(SEPARATOR) + 1);
			} else {
				str = checkPath;
				checkPath = "";
			}
			list.add(str);
		}

		filePathList = list.toArray(new String[list.size()]);
	}

	public String getFilePath() {
		StringBuffer sb = new StringBuffer();
		for (String path : filePathList) {
			sb.append(path);
			sb.append(SEPARATOR);
		}
		return sb.toString();
	}

	/**
	 * @return fileName
	 */
	public String getFileName() {
		return fileName;
	}

	/**
	 * @param fileName
	 *            セットする fileName
	 */
	public void setFileName(String fileName) {
		this.fileName = fileName;
	}

	/**
	 * @return fileExt
	 */
	public String getFileExt() {
		return fileExt;
	}

	/**
	 * @param fileExt
	 *            セットする fileExt
	 */
	public void setFileExt(String fileExt) {
		this.fileExt = fileExt;
	}

}
}












EOF
最終更新:2014年08月22日 11:41