import java.awt.*;
import java.io.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.awt.image.*;
import com.sun.image.codec.jpeg.*;
import javax.imageio.*;
public class ImgBean{
static Date birthday = null;
public static void main(String[] args) throws ParseException {
// ImgYin("", "E:\\20121109_211615.jpg");
birthday = sdf.parse("20120823");
getImgFiles("D:\\photo");
}
static SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
static SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy.MM.dd");
public static void getImgFiles(String path){
File file = new File(path);
String[] files = file.list(new FilenameFilter() {//文件過濾器
@Override
public boolean accept(File dir, String name) {
if( name.endsWith(".jpg") && !name.contains("_sy") ){
return true;
}
return false;
}
});
for(String f : files){
if(f.matches("\\d{8}_.+")){
String imgdate = f.substring(0,f.indexOf("_"));
try {
Date date = sdf.parse(imgdate);
int day = diffDate(date)+1;
String imgname = "^-^第"+day+"天("+sdf1.format(date)+")";
System.out.println(path+"\\"+f);
ImgYin(imgname, path+"\\"+f);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
}
public static void ImgYin(String ImgName,String ImgPath){
try{
float fz = 3264/150;//字體大小的因子
// s="^-^第60天(2012.8.15)";
File _file = new File(ImgPath);
Image src = ImageIO.read(_file);
int width=src.getWidth(null);
int height=src.getHeight(null);
System.out.println(width+"#"+height);
BufferedImage image=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
Graphics g=image.createGraphics();
g.drawImage(src,0,0,width,height,null);
g.setColor(Color.PINK);
g.setFont(new Font("宋体",Font.PLAIN,(int)(width/fz)));
System.out.println((int)(width/fz));
g.drawString(ImgName,(int)(width*0.48),(int)(height*0.1) );
g.dispose();
FileOutputStream out=new FileOutputStream(ImgPath);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
out.close();
}
catch(Exception e){
System.out.println(e);
}
}
public static long getMillis(Date date) {
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTime(date);
return c.getTimeInMillis();
}
//返回日期与今天相差的天数
public static int diffDate(Date date){
return (int) ((getMillis(date) - getMillis(birthday)) / (24 * 3600 * 1000));
}
}