知识大全 用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

相关参考

知识大全 用java生成缩略图和给图上打上公司logo

  这是我前两天写的生成图片的缩略图和给图片打上logo的java代码没有怎么整理就放上来了希望能够为大家在工作中帮点忙同时写的有什么不对的地方希望大家指点指点  importjavaawtGraph

知识大全 怎样使用Java Servlet动态生成图片详解

怎样使用JavaServlet动态生成图片详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在

知识大全 java文字转成图片显示

  packagerge;importjavaioIOException;importjavaioPrintWriter;importjavaio*;importjavaawt*;importjava

知识大全 jsp上传图片即时显示效果代码

cha138/Article/program/Java/JSP/201311/20450

知识大全 asp 生成图片验证码

  下面一款代码是一个用asp生成图片验证码的程序哦关于验证代码写程序的大多都会知道哦下面来看看这款图片验证码的生成方式吧cha138/Article/program/net/201311/

知识大全 artdialog的图片/标题以及关闭按钮不显示的解决方法

cha138/Article/program/Java/JSP/201311/20393

知识大全 用Java代码生成打印收据

用Java代码生成打印收据  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  首先来看看效果如下图 

知识大全 用JSP实现数据库图片的存储与显示实例[1]

用JSP实现数据库图片的存储与显示实例[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  引言

知识大全 用JSP实现数据库图片的存储与显示实例[4]

用JSP实现数据库图片的存储与显示实例[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  将此

知识大全 用JSP实现数据库图片的存储与显示实例[2]

用JSP实现数据库图片的存储与显示实例[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  将此