<!-先创建文件夹,以便图片存放-!>
private void newFolder(String folderPath) {
String filePath = folderPath;
filePath = filePath.toString(); //指定路径的建文件夹
java.io.File myFilePath = new java.io.File(filePath);
try {
if (myFilePath.isDirectory()) { //已经存在
System.out.println("该文件目录已经存在");
} else {
myFilePath.mkdir(); //建立文件夹
}
} catch (Exception e) {
e.printStackTrace();
}
}
注: 若要建多层次的文件夹,必须一次一次的建,此方法不支持一次性建完。
二:目录建好后,文字图片合成
public String ImageMoneyVsName(String Name,Long Money,String url,Long shopCode) {
try {
// 读取模板图片内容
JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(new FileInputStream(url); //读取图片路径
BufferedImage image = decoder.decodeAsBufferedImage();
Graphics2D g = image.createGraphics();// 得到图形上下文
g.setColor(Color.BLACK); // 设置画笔颜色
RenderingHints rh = new RenderingHints( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
rh.put(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE);
rh.put(RenderingHints.KEY_ALPHA_INTERPOLATION,RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
rh.put(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
rh.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
g.setRenderingHints(rh);
g.setColor(Color.black);
Font font = new Font("宋体", Font.BOLD, 12);
g.setFont(font);
FontMetrics fm = g.getFontMetrics(font);
//设置换行操作
int fontHeight = fm.getHeight(); //字符的高度
int offsetLeft = 16;
int rowIndex = 1;
for(int i=0;i<Name.length();i++){
char c = Name.charAt(i);
int charWidth = fm.charWidth(c); //字符的宽度
//另起一行
if(Character.isISOControl(c) || offsetLeft >= (171-charWidth)){
rowIndex++;
offsetLeft = 16;
}
g.drawString(String.valueOf(c), offsetLeft, rowIndex * fontHeight); //把一个个写到图片上
offsetLeft += charWidth; //设置下字符的间距
}
Font font1 = new Font("宋体", Font.BOLD, 16);
g.setFont(font1);
g.drawString("金额:"+Money+"元",50,65);//50代表以图片左上顶点为原点的宽度,65代表以图片左上顶点为原点的高度
g.dispose();
// 穿件客户文件夹
String Folder=FileUtils.encrypt(shopCode);
newFolder("S/");
newFolder("S/"+ Folder);
newFolder("S/"+ Folder+ "/"+"COUPON"); //分三级目录
//图片的名称(把当前的时间分离设置成图片的名字)
String imgurl="S_"+String.valueOf(new Date().toLocaleString()).replace("_", "").replace(":", "").replace(" ", "").replace("-", "") + ".jpg";
String outFileName ="S/" +Folder + "/"+"COUPON"+"/" + imgurl; //图片要存储的路径
FileOutputStream out = new FileOutputStream(outFileName);//通过流操作把文字图片结合
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
out.close();
return outFileName;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}