解压一个app后,得到一堆的图片,按像素大小进行筛选非常方便
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import javax.imageio.ImageIO;
public class Main {
/**
* 按像素大小
*/
static final String TYPE_PX = "px";
/**
* 按文件 大小
*/
static final String TYPE_SIZE = "size";
static final String NEW_DIR = "SELECT_IMG";
/**
* @param args
*
* 带两个参数:
*
* 参数一:类型
*
* 参数二:值
*/
public static void main(String[] args) {
if (args == null || args.length < 3) {
System.out.println("少参数:int 大小,int w,int h");
return;
}
int or, w, h;
try {
or = Integer.valueOf(args[0]);
w = Integer.valueOf(args[1]);
h = Integer.valueOf(args[2]);
} catch (Exception e) {
p("参数类型不对,三个都为整型");
return;
}
File dir = new File(NEW_DIR);
StringBuilder sb = new StringBuilder();
// 如果存在,就创建新的目录
while (dir.exists()) {
sb.append("new_");
dir = new File(sb.toString() + NEW_DIR);
p("目录存在,创建新目录:" + dir.getName());
}
// 创建目录
dir.mkdirs();
// 选择图片
selectImgByPx(dir, or, w, h);
}
private static void selectImgByPx(File dir, int or, int w, int h) {
p("选择:" + (or > 0 ? "大于" : or == 0 ? "等于" : "小于") + w + "x" + h + "的图片");
File root = new File(".");
p("当前目录:" + root.getAbsolutePath());
if (!root.exists() || !root.isDirectory()) {
p("当前目录不存在,或为空");
return;
}
String[] fs = root.list();
p("当前文件个数:" + fs.length);
ArrayList value = new ArrayList<>();
if (fs != null) {
for (String f : fs) {
BufferedImage bi = null;
try {
bi = ImageIO.read(new File(f));
int width = bi.getWidth();
int height = bi.getHeight();
p("width=" + width);
p("height=" + height);
if (or == 0) {
if (width == w && height == h) {
value.add(new File(f));
}
} else if (or > 0) {
if (width > w && height > h) {
value.add(new File(f));
}
} else {
if (width < w && height < h) {
value.add(new File(f));
}
}
} catch (Exception e) {
p("异常:" + e.getMessage());
e.printStackTrace();
}
}
}
// 把图片复制到指定目录
for (File f : value) {
try {
copy(f, dir);
} catch (IOException e) {
p("异常:" + e.getMessage());
e.printStackTrace();
}
}
}
private static void copy(File f, File dir) throws IOException {
p("复制图片:" + f.getName());
OutputStream outputStream = new FileOutputStream(new File(dir,
f.getName()));
InputStream inputStream = new FileInputStream(f);
byte[] buff = new byte[4096];
int n = 0;
while ((n = inputStream.read(buff)) != -1) {
outputStream.write(buff, 0, n);
}
outputStream.flush();
outputStream.close();
inputStream.close();
}
private static void p(String str) {
System.out.println(str);
}
}
把以上代码用Eclipse进行导出,得到jar
使用:
java -jar select.jar 0 100 100 表示选择等于100X100大小的图片,
java -jar select.jar 1 100 100 表示选择大于100X100大小的图片,
java -jar select.jar -1 100 100 表示选择小于100X100大小的图片,