知识大全 用Java来显示图片生成器
Posted 知
篇首语:大多数人想要改造这个世界,但却罕有人想改造自己。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 用Java来显示图片生成器相关的知识,希望对你有一定的参考价值。
用Java来显示图片生成器 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
一 本图片生成器具有以下功能特性
可以设置图片的宽度 高度 外框颜色 背景色
可以设置图片字体的大小 名称 颜色
可以设置输出图片的格式 如JPEG GIF等
可以将图片存储到一个文件或者存储到一个输出流
可以为图片增加若干条干扰线(在生成随机码图片时可用此特性)
打印在图片上的文字支持自动换行
另外 本图片生成器还用到了模板方法模式
二 下面列出相关的源代码
抽象类AbstractImageCreator的源代码
/**本代码在 已使用了 */
public abstract class AbstractImageCreator
private static Random rnd = new Random(new Date() getTime());
//图片宽度
private int width = ;
//图片高度
private int height = ;
//外框颜色
private Color rectColor;
//背景色
private Color bgColor;
//干扰线数目
private int lineNum = ;
//图片格式
private String formatName = JPEG ;
//字体颜色
private Color fontColor = new Color( );
//字体名称
private String fontName = 宋体 ;
//字体大小
private int fontSize = ;
//##### 这里省略成员变脸的get set方法 #####
/**
* 画干扰线
*/
private void drawRandomLine(Graphics graph)
for(int i= ;i<lineNum;i++)
//线条的颜色
graph setColor(getRandomColor( ));
//线条两端坐标值
int x = rnd nextInt(width);
int y = rnd nextInt(height);
int x = rnd nextInt(width);
int y = rnd nextInt(height);
//画线条
graph drawLine(x y x y );
/**
* 随机获取颜色对象
*/
private Color getRandomColor(int base int range)
if((base + range) > ) range = base;
int red = base + rnd nextInt(range);
int green = base + rnd nextInt(range);
int blue = base + rnd nextInt(range);
return new Color(red green blue);
//该方法内应用了模板方法模式
public void drawImage(String text)throws IOException
BufferedImage image = new BufferedImage(width height BufferedImage TYPE_INT_RGB);
if(rectColor == null) rectColor = new Color( );
if(bgColor == null) bgColor = new Color( );
//获取画布
Graphics graph = image getGraphics();
//画长方形
graph setColor(bgColor);
graph fillRect( width height);
//外框
graph setColor(rectColor);
graph drawRect( width height );
//画干扰线
drawRandomLine(graph);
//画字符串
drawString(graph text);
//执行
graph dispose();
//输出图片结果
saveImage(image);
protected abstract void drawString(Graphics graph String text);
protected abstract void saveImage(BufferedImage image)throws IOException;
类DefaultImageCreator的源代码
该类将生成的图片存储到一个文件中 需要设置outputFilePath成员变量值 该成员变量值表示图片的存储全路径
Java代码
public class DefaultImageCreator extends AbstractImageCreator
private String outputFilePath;
public String getOutputFilePath()
return outputFilePath;
public void setOutputFilePath(String outputFilePath)
this outputFilePath = outputFilePath;
public DefaultImageCreator()
public DefaultImageCreator(String outputFilePath)
this outputFilePath = outputFilePath;
@Override
protected void drawString(Graphics graph String text)
graph setColor(getFontColor());
Font font = new Font(getFontName() Font PLAIN getFontSize());
graph setFont(font);
FontMetrics fm = graph getFontMetrics(font);
int fontHeight = fm getHeight(); //字符的高度
int offsetLeft = ;
int rowIndex = ;
for(int i= ;i<text length();i++)
char c = text charAt(i);
int charWidth = fm charWidth(c); //字符的宽度
//另起一行
if(Character isISOControl(c) || offsetLeft >= (getWidth() charWidth))
rowIndex++;
offsetLeft = ;
graph drawString(String valueOf(c) offsetLeft rowIndex * fontHeight);
offsetLeft += charWidth;
@Override
protected void saveImage(BufferedImage image)throws IOException
ImageIO write(image getFormatName() new File(outputFilePath));
类OutputStreamImageCreator的源代码
该类将生成的图片存储到一个输出流中 需要设置out成员变量值
Java代码
public class OutputStreamImageCreator extends DefaultImageCreator
private OutputStream out ;
public OutputStream getOut()
return out;
public void setOut(OutputStream out)
this out = out;
public OutputStreamImageCreator()
public OutputStreamImageCreator(OutputStream out)
this out = out;
@Override
public String getOutputFilePath()
return null;
@Override
public void setOutputFilePath(String outputFilePath)
outputFilePath = null;
@Override
protected void saveImage(BufferedImage image) throws IOException
if(out!=null) ImageIO write(image getFontName() out);
三 实例代码
图片存储到文件
StringBuffer sb = new StringBuffer();
sb append( 中华人民共和国\\n );
sb append( 中华人民共和国\\n );
DefaultImageCreator creator = new DefaultImageCreator( c:\\\\img jpeg );
creator setWidth( );
creator setHeight( );
creator setLineNum( );
creator setFontSize( );
cha138/Article/program/Java/hx/201311/26622相关参考
这是我前两天写的生成图片的缩略图和给图片打上logo的java代码没有怎么整理就放上来了希望能够为大家在工作中帮点忙同时写的有什么不对的地方希望大家指点指点 importjavaawtGraph
怎样使用JavaServlet动态生成图片详解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在
packagerge;importjavaioIOException;importjavaioPrintWriter;importjavaio*;importjavaawt*;importjava
cha138/Article/program/Java/JSP/201311/20450
下面一款代码是一个用asp生成图片验证码的程序哦关于验证代码写程序的大多都会知道哦下面来看看这款图片验证码的生成方式吧cha138/Article/program/net/201311/
知识大全 artdialog的图片/标题以及关闭按钮不显示的解决方法
cha138/Article/program/Java/JSP/201311/20393
用Java代码生成打印收据 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 首先来看看效果如下图
用JSP实现数据库图片的存储与显示实例[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 引言
用JSP实现数据库图片的存储与显示实例[4] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 将此
用JSP实现数据库图片的存储与显示实例[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 将此