|
|
根据图片尺寸分类的小程序 |
| 作者:ItWen收集整理 来源:www.itwen.com 更新时间:2006-11-18 |
|
|
[ 收藏此页到: 天天
| 和讯
| 博采
| ViVi
| 狐摘
| 我摘
]
|
|
功能:将输入目录类所有的文件按照输入尺寸:长,宽进行筛选,生成3个文件列表:尺寸大于输入,尺寸小于输入,分析失败。代码如下:/** * 2005-05-19 */import java.awt.image.BufferedImage;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileReader;import java.io.FileWriter;import java.io.FilenameFilter;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import com.sun.image.codec.jpeg.ImageFormatException;import com.sun.image.codec.jpeg.JPEGCodec;import com.sun.image.codec.jpeg.JPEGImageDecoder;import com.sun.image.codec.jpeg.TruncatedFileException;/** * * @author LEI * * TODO To change the template for this generated type comment go to Window - * Preferences - Java - Code Style - Code Templates */public class ImgFilter { /** Automatically generated javadoc for: INT_100 */ private static final int INT_100 = 100; /** Automatically generated javadoc for: INT_600 */ private static final int INT_600 = 600; /** Automatically generated javadoc for: INT_800 */ private static final int INT_800 = 800; /** * */ private static void error () { System.out .println("Too Few Argument.\nImgFileter c:/images 800(width) 600(height)"); } public static void main (String[] args) { if (args.length < 3) { error(); return; } ImgFilter bot = new ImgFilter(); bot.execute(args); System.out.println("--------\n"); } /** * Check the input image size pixel(s) * * @param fp * @param minWidth * @param minHeight * @return */ private int checkSize (String fp, int minWidth, int minHeight) { InputStream in = null; try { BufferedImage mImage; in = new FileInputStream(fp); JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(in); mImage = decoder.decodeAsBufferedImage(); int height = mImage.getHeight(); int width = mImage.getWidth(); long minSqure = minWidth * minHeight; long squre = width * height; if (width < minWidth && height < minHeight) { return 0; } if (squre < minSqure) { return 0; } return 1; } catch (TruncatedFileException ig1) { // System.err.println(fp + ": " + imgx.toString()); return -1; } catch (ImageFormatException ig2) { return -1; } catch (IOException ex) { System.err.println(fp + ": " + ex.toString()); return -1; } finally { try { in.close(); } catch (IOException ignored) { } } } /** * Main entrance of the ImgFilter Class * * @param args */ private void execute (String[] args) { String fd = args[0]; String extend = "jpg"; int width = INT_800, height = INT_600; try { width = Integer.parseInt(args[1]); height = Integer.parseInt(args[2]); } catch (Exception ignored) { } String[] lstFiles = retrieveDirList(fd, extend); if (lstFiles == null) { return; } int max = lstFiles.length; List lstOk = new ArrayList(); List lstBad = new ArrayList(); List lstUn = new ArrayList(); for (int i = 0; i < lstFiles.length; i++) { String fn = lstFiles[i]; String fp = fd + "/" + fn; int rs = checkSize(fp, width, height); if (rs == 1) { lstOk.add(fn); } else if (rs == 0) { lstBad.add(fn); } else { lstUn.add(fn); } if (i % INT_100 == 0) { System.out.println(i + "/" + max); } } // end for System.out.println(max + "/" + max); writeFile(fd + "/ok.lst", lstOk); writeFile(fd + "/fail.lst", lstBad); moveLstFile(fd + "/fail.lst", "small"); writeFile(fd + "/bad.lst", lstUn); moveLstFile(fd + "/bad.lst", "bad"); } /** * generate move file list * * @param fp * @param dirname */ private void moveLstFile (String fp, String dirname) { BufferedReader br = null; StringBuffer sb = new StringBuffer(); try { br = new BufferedReader(new FileReader(fp)); String line = br.readLine(); while (line != null) { sb.append("move ").append(line).append(" ").append(dirname) .append("\\ \r\n"); line = br.readLine(); } this.writeFile(fp + ".cmd", sb.toString()); } catch (IOException e) { e.printStackTrace(); } finally { try { br.close(); } catch (IOException e) { // ignored } } } /** * Retrieve the spec extend name file list * * @return */ private String[] retrieveDirList (String fd, String ext) { FilenameFilter filter = new FilenameFilter() { public boolean accept (File dir, String name) { return name.endsWith(".jpg"); } }; File dir = new File(fd); String[] list = dir.list(filter); return list; } /** * write input list to file * * @param string * @param lstUn */ private void writeFile (String string, List lst) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < lst.size(); i++) { sb.append(lst.get(i)).append("\r\n"); } writeFile(string, sb.toString()); } /** * Write input content to input fp * * @param fp * @param content */ private void writeFile (String fp, String content) { FileWriter fw = null; try { fw = new FileWriter(fp); fw.write(content); } catch (IOException e) { System.err.println("Write:" + fp + "failed:" + e.toString()); } finally { try { fw.close(); } catch (IOException e1) { } } }} // eof(完)计算机基础教程网
|
引用提示:
内容页面:根据图片尺寸分类的小程序 --- Java语言
作者:ItWen收集整理
来源:www.ITWEN.com 计算机基础教程网
|
版权申明:
本网站所有内容,未经注明的,版权一律属于计算机基础教程网(ITWEN.com)制作署所有。转载引用本网站的原创文章,请务必注明信息来源,标明“计算机基础教程网(ITWEN.com)”字样。
计算机基础教程网(ITWEN.com)依法保护知识产权,如果我们的文章有涉及或侵犯您的有关权益,请即时与我们联系, 注明网址及文章,我们会即时处理或删除, 感谢您的合作!
|
【大 中 小】
【返回站点首页】【打印本页】【关闭本页】
|
|
|
|
|
资料搜索 |
|
|
|
热门文章 |
|
|
|
前面文章 |
|
|
|
|