读书人

生成价钱图片的工具类

发布时间: 2012-09-10 11:02:32 作者: rapoo

生成价格图片的工具类
为了减轻后台服务器的压力,前台页面做了静态化,但是商品的价格是经常变化的,为此价格需要实时加载,将商品的价格生成图片,后台服务器添加和修改商品时生成。
后来查看了下京东,价格也是用图片做的。
以下是代码

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,要不然不如不写。");}}}

读书人网 >Web前端

热点推荐