日期:2014-05-20  浏览次数:20672 次

想实现一个这样的功能,有谁能帮我实现呢?满分奉上
递归遍历一个文件夹,获取该文件夹下所有图片尺寸为800*800,并且图片大小小于300K的图片。
并且把这些图片复制到一个份,在原有的名字基础上添加一些特殊标记。。
应该怎么实现呢?

------解决方案--------------------
这个功能不难实现吧?给出获取图片宽高的代码:
ImageIcon icon = new ImageIcon(String url);
int width = icon.getIconWidth();
int height = img.getIconHeight();

------解决方案--------------------
API里关于Image的类里应该有介绍的吧···我猜的···
------解决方案--------------------
留个脚印,如果明早还没人帮你完成的话我上班的时候写。
------解决方案--------------------
package com.djk.design.Test;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;

import javax.imageio.ImageIO;

/**
 * 客户端测试方法
 * @author djk
 *
 */
public class PictureClient 
{
public static void main(String[] args) throws Exception 
{
//指定要复制的图片的后缀名
List<String> list = new ArrayList<String>();
list.add("jpg");
ValidatePicture validatePicture = new DjkValidatePictrue(list);
HandlePictrue handlePictrue = new DjkHandlePicture(validatePicture);
//指定源文件夹和目标文件假
handlePictrue.copyPictrue("D:/test", "E:/picture/");
}
}


/**
 * 校验图片接口包括
 * 1:图片的尺寸为800*800
 * 2:图片的大小小于300K
 * 3:得到指定路径下的所有图片路径
 * @author djk
 *
 */
interface ValidatePicture
{
/**
 * 检查图片的尺寸是否为800*800是返回true,不是返回false
 * @param path
 * @return
 */
boolean isSizeInRange(String path);

/**
 * 检查图片是否小于300K小于则返回true大于等于则返回false
 * @param path
 * @return
 */
boolean isSizeOk(String path);

/**
 * 得到这个文件下的所有的图片
 * @param path
 * @return
 */
List<String> getAllPiacturePath(String path);
}

/**
 * 图片处理接口包括
 * 1:
 * 2:复制符合条件的图片
 * 
 * @author djk
 *
 */
interface HandlePictrue
{
/**
 * 复制图片
 */
void copyPictrue(String source,String path) throws Exception;

}

/**
 * 校验实现类
 * @author djk
 *
 */
class DjkValidatePictrue implements ValidatePicture
{
private static List<String> list = new ArrayList<String>();

/**
 * 图片的后缀
 */
private List<String> pictureSuffix ;

public DjkValidatePictrue(List<String> pictureSuffix)
{
this.pictureSuffix = pictureSuffix;
}

@Override
public boolean isSizeInRange(String path) 
{
int height=0;
int weight = 0;
try {
InputStream is = new FileInputStream(new File(path));