最近更新   设为主页   根据图片尺寸分类的小程序 加入收藏  
计算机基础教程网 本站招聘  
 [投稿登 陆]    [问题求解或论坛登 陆]
ITWEN首页操作系统网络冲浪办公软件网页设计图形图象认证考试程序设计数据库其它文章交流论坛  
  当前位置:ITWen >>  Java语言  >>  根据图片尺寸分类的小程序
根据图片尺寸分类的小程序
作者: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)依法保护知识产权,如果我们的文章有涉及或侵犯您的有关权益,请即时与我们联系, 注明网址及文章,我们会即时处理或删除, 感谢您的合作!   


】 【返回站点首页】【打印本页】【关闭本页
     资料搜索
     热门文章
·比 FastPos 还要快 Pos
·MoreEffectiveC++条
·强制和防止窗口重画
·在C#中应用MapObjects渲
·实现接口4
·通过.NET访问 Oracle数据
·Java下的Framework编写
·CorelDRAW 11抢鲜试用手
·Photoshop小技巧之七1
·用Photoshop实现立体感效果
·我的寒假作品接近完工了。Fligh
·原来win+apache实现ssl
·在Redhat7.3.8.09.0
·学不会的JAVA,消不了的忧愁之五
·JSP/Servlet 中的汉字编
     前面文章
·将你的网站设置为客户的信任站点--
·J2ME应用用户体验核对表翻译
·vi常用命令
·试试看这个,可能和你的要求不一样,
·jive3.1.1的安裝
·用C#编写一个抓网页的应用程序
·用VB6.0自制压缩与解压缩程序三
·WIN32汇编24.WINDOWS
·在ASP与ASP.NET之间共享对
·替代System.Web.Mail
·AS的基本代码解释3
·Photoshop5.5字体特效花
·利用Java创建高性能的应用程序和
·用XML和XSL来生成动态页面
·建站之始 始于装IIS
·用FreeBSD+IPFW配置防火
·Windows95/98,NT下如
·小窗口大学问--玩转弹出窗口2
·photoshop制作属于自己的星
·模拟office菜单

文章: 根据图片尺寸分类的小程序 已经被浏览了 次。
免责声明 | 关于我们 | 广告联系 | 友情链接 | 帮助设置 | 网站导航 | 最近更新 | 共同合作
计算机基础教程网(www.ITwen.com) 版权所有
copyright 2005-2006,All Rights Reserved
计算机基础教程网