Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 301|回复: 0

[图像处理学习]根据图片尺寸分类的小程序

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-30 23:57:04 | 显示全部楼层 |阅读模式
    这个程序将输入目录中所有的文件按照输入尺寸:长,宽进行筛选,生成3个文件列表:尺寸大于输入,尺寸小于输入,分析失败。

    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 javax.imageio.*;  
      
      
    1. public class ImgFilter {
    2.     /** Automatically generated javadoc for: INT_100 */
    3.     private static final int INT_100 = 100;

    4.     /** Automatically generated javadoc for: INT_600 */
    5.     private static final int INT_600 = 600;

    6.     /** Automatically generated javadoc for: INT_800 */
    7.     private static final int INT_800 = 800;
    8.    
    9.     private static void error () {
    10.         System.out.println("Too Few Argument.
    11. java ImgFileter c:/images 800(width) 600(height)");
    12.     }
    13.     public static void main (String[] args) {
    14.         if (args.length < 3) {
    15.             error();
    16.             return;
    17.         }
    18.         ImgFilter bot = new ImgFilter();
    19.         bot.execute(args);
    20.         System.out.println("--------
    21. ");
    22.     }
    23.     /**
    24.      * Check the input image size pixel(s)
    25.      *
    26.      * @param fp
    27.      * @param minWidth
    28.      * @param minHeight
    29.      * @return
    30.      */
    31.     private int checkSize (String fp, int minWidth, int minHeight) {
    32.         InputStream in = null;
    33.         try {
    34.             BufferedImage mImage;
    35.             in = new FileInputStream(fp);
    36.             
    37.             mImage = ImageIO.read(in);
    38.             int height = mImage.getHeight();
    39.             int width = mImage.getWidth();
    40.             long minSqure = minWidth * minHeight;
    41.             long squre = width * height;
    42.             if (width < minWidth && height < minHeight) {
    43.                 return 0;
    44.             }
    45.             if (squre < minSqure) {
    46.                 return 0;
    47.             }
    48.             return 1;
    49.       
    50.         } catch (Exception ex) {
    51.             System.err.println(fp + ": " + ex.toString());
    52.             return -1;
    53.         } finally {
    54.             try {
    55.                 in.close();
    56.             } catch (IOException ignored) {
    57.             }
    58.         }
    59.     }
    60.     /**
    61.      * Main entrance of the ImgFilter Class
    62.      *
    63.      * @param args
    64.      */
    65.     private void execute (String[] args) {
    66.         String fd = args[0];
    67.         System.out.println(args[0]);
    68.         String extend = "jpg";
    69.         int width = INT_800, height = INT_600;
    70.         try {
    71.             width = Integer.parseInt(args[1]);
    72.             height = Integer.parseInt(args[2]);
    73.         } catch (Exception ignored) {
    74.         }
    75.         String[] lstFiles = retrieveDirList(fd, extend);
    76.         if (lstFiles == null) {
    77.             return;
    78.         }
    79.         int max = lstFiles.length;
    80.         List
    81.    
    82.       lstOk = new ArrayList
    83.      
    84.       ();
    85.         List
    86.       
    87.         lstBad = new ArrayList
    88.       
    89.         ();
    90.         List
    91.         
    92.           lstUn = new ArrayList
    93.          
    94.           ();
    95.         for (int i = 0; i < lstFiles.length; i++) {
    96.             String fn = lstFiles[i];
    97.             String fp = fd + "/" + fn;
    98.             int rs = checkSize(fp, width, height);
    99.             if (rs == 1) {
    100.                 lstOk.add(fn);
    101.             } else if (rs == 0) {
    102.                 lstBad.add(fn);
    103.             } else {
    104.                 lstUn.add(fn);
    105.             }
    106.             if (i % INT_100 == 0) {
    107.                 System.out.println(i + "/" + max);
    108.             }
    109.         } // end for
    110.          

    111.         System.out.println(max + "/" + max);
    112.         writeFile(fd + "/ok.lst", lstOk);
    113.         writeFile(fd + "/fail.lst", lstBad);
    114.         moveLstFile(fd + "/fail.lst", "small");
    115.         writeFile(fd + "/bad.lst", lstUn);
    116.         moveLstFile(fd + "/bad.lst", "bad");
    117.     }
    118.     /**
    119.      * generate move file list
    120.      *
    121.      * @param fp
    122.      * @param dirname
    123.      */
    124.     private void moveLstFile (String fp, String dirname) {
    125.         BufferedReader br = null;
    126.         StringBuffer sb = new StringBuffer();
    127.         try {
    128.             br = new BufferedReader(new FileReader(fp));
    129.             String line = br.readLine();
    130.             while (line != null) {
    131.                 sb.append("move ").append(line).append(" ").append(dirname)
    132.                         .append("\
    133. ");
    134.                 line = br.readLine();
    135.             }
    136.             this.writeFile(fp + ".cmd", sb.toString());
    137.         } catch (IOException e) {
    138.             e.printStackTrace();
    139.         } finally {
    140.             try {
    141.                 br.close();
    142.             } catch (IOException e) {
    143.                 // ignored
    144.             }
    145.         }
    146.     }
    147.     /**
    148.      * Retrieve the spec extend name file list
    149.      *
    150.      * @return
    151.      */
    152.     private String[] retrieveDirList (String fd, final String ext) {
    153.         FilenameFilter filter = new FilenameFilter() {
    154.             public boolean accept (File dir, String name) {
    155.                 return name.endsWith(ext);
    156.             }
    157.         };
    158.         File dir = new File(fd);
    159.         String[] list = dir.list(filter);
    160.         return list;
    161.     }
    162.     /**
    163.      * write input list to file
    164.      *
    165.      * @param string
    166.      * @param lstUn
    167.      */
    168.     private void writeFile (String string, List lst) {
    169.         StringBuffer sb = new StringBuffer();
    170.         for (int i = 0; i < lst.size(); i++) {
    171.             sb.append(lst.get(i)).append("
    172. ");
    173.         }
    174.         writeFile(string, sb.toString());
    175.     }
    176.     /**
    177.      * Write input content to input fp
    178.      *
    179.      * @param fp
    180.      * @param content
    181.      */
    182.     private void writeFile (String fp, String content) {
    183.         FileWriter fw = null;
    184.         try {
    185.             fw = new FileWriter(fp);
    186.             fw.write(content);
    187.         } catch (IOException e) {
    188.             System.err.println("Write:" + fp + "failed:" + e.toString());
    189.         } finally {
    190.             try {
    191.                 fw.close();
    192.             } catch (IOException e1) {
    193.             }
    194.         }
    195.     }
    196. } // eof
    197.          

    198.                      
    199.          
    200.         
    201.       
    202.       
    203.      
    204.    
    复制代码

       
         
         
          
          

            
          

            
          
         
       

    1.                         
    复制代码

      


    源码下载:http://file.javaxxz.com/2014/10/30/235703906.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-19 00:30 , Processed in 0.430447 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表