为了减轻后台服务器的压力,前台页面做了静态化,但是商品的价格是经常变化的,为此价格需要实时加载,将商品的价格生成图片,后台服务器添加和修改商品时生成。
后来查看了下京东,价格也是用图片做的。
以下是代码
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
/**
* Oct 22, 2011
*/
public class ImgUtil {
/**
* @param args
*/
public static void main(String[] args) {
String fileContent="¥ 1710.33";
String fileName="123_1.jpg";
String filePath="D:/"+fileName;
generateImg(fileContent,filePath,false);
}
public static void generateImg(String content,String filePath,boolean isSpecial){
try {
BufferedImage im=CreateImage(content,isSpecial);
File output=new File(filePath);
ImageIO.write(im, "JPEG", output);
} catch (Exception e) {
System.out.println("生成文件失败。");
e.printStackTrace();
return;
}
}
/**
*
* @param sCode
* @param isSpecial 是否市场价,市场价需要添加删除线
* @return
*/
public static BufferedImage CreateImage(String sCode,boolean isSpecial)
{
try{
//字符的字体
Font CodeFont =new Font("宋体",Font.BOLD,13);
if(isSpecial){
CodeFont =new Font("宋体",Font.PLAIN,14);
}
int iLength = sCode.length(); //得到图片需要输出文字的长度
int width=10*iLength, height=28; //图象宽度与高度
int CharWidth = (int)(width-18)/iLength; //字符距左边宽度
int CharHeight = 20; //字符距上边高度
// 在内存中创建图象
BufferedImage image = new BufferedImage(8*iLength,height,BufferedImage.TYPE_INT_RGB);
// 获取图形上下文
Graphics g = image.getGraphics();
// 设定背景色
//g.setColor(getRandColor(200,240));
g.fillRect(0, 0, width, height);
//设定字体
g.setFont(CodeFont);
if(isSpecial){//是否是市场价,市场价,添加删除线
g.setColor(Color.gray);
int x = 0;
int y = height/2;
int xl = width;
int yl = height/2;
g.drawLine(x,y,xl,yl);
}
for (int i=0;i<iLength;i++)
{
String rand = sCode.substring(i,i+1);
// 将内容显示到图象中
if(isSpecial){
g.setColor(new Color(119,119,119));
}else{
g.setColor(new Color(255,0,0));
}
g.drawString(rand,CharWidth*i+1,CharHeight);
}
// 图象生效
g.dispose();
return image;
}
catch(Exception e)
{
e.printStackTrace();
}
return null;
}
}
下面是一个打叉的程序,和以上程序差不多
package info.frady;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
public class ImgGen {
public static void main(String[] args) {
File fileDir=new File("D:/java/tomcat6/webapps/HQ/upload/autograph/");
try{
File files[]=fileDir.listFiles();
for(File file:files){
Image src = ImageIO.read(file);
int width = src.getWidth(null);
int height = src.getHeight(null);
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g = image.createGraphics();
g.drawImage(src, 0, 0, width, height, null);
g.setColor(Color.red);
g.drawLine(0,0,width,height);
g.drawLine(0,height,width,0);
g.dispose();
ImageIO.write(image, "JPEG", file);
}
}catch(Exception e){
System.out.println("此处只是个示例,你需要重新此error,要不然不如不写。");
}
}
}