论坛首页 入门技术论坛

java修改图片的基本应用-- 添加字符

浏览 7531 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-09-02  
前天给别的项目组帮忙,做一个给图片添加指定字符的例子;网上这方面的资料不多,好不容易在sun的官方网站上找到一点资料(http://java.sun.com/docs/books/tutorial/2d/images/index.html),可是说的也不全面,偶只好参照JDK和这点资料搞了一个例子!
主要代码如下:

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.net.URL;

private Font font = null;// 添加字体的属性设置

private Graphics2D g = null;

private int fontsize = 0;

private int x = 0;

private int y = 0;


/**
* 导入本地图片到缓冲区
*/
public BufferedImage loadImageLocal(String imgName)
{
	try
	{
		return ImageIO.read(new File(imgName));
	} catch (IOException e)
	{
		System.out.println(e.getMessage());
	}
	return null;
}


/**
* 导入网络图片到缓冲区
*/
public BufferedImage loadImageUrl(String imgName)
{
	try
	{
		URL url = new URL(imgName);
		return ImageIO.read(url);
	} catch (IOException e)
	{
		System.out.println(e.getMessage());
	}
	return null;
}



/**
* 生成新图片到本地
*/
public void writeImageLocal(String newImage, BufferedImage img)
{
	if (newImage != null && img != null)
	{
		try
		{
			File outputfile = new File(newImage);
			ImageIO.write(img, "gif", outputfile);
		} catch (IOException e)
		{
			System.out.println(e.getMessage());
		}
	}
}


/**
* 设定文字的字体等
 */
public void setFont(String fontStyle, int fontSize)
{
	this.fontsize = fontSize;
	this.font = new Font(fontStyle, Font.PLAIN, fontSize);
}



/**
 * 修改图片,返回修改后的图片缓冲区(只输出一行文本)
*/
public BufferedImage modifyImage(BufferedImage img, Object content, int x,int y)
{

	try
	{
		int w = img.getWidth();
		int h = img.getHeight();
		g = img.createGraphics();
		g.setBackground(Color.WHITE);
		g.setColor(Color.RED);
		if (this.font != null)
		g.setFont(this.font);
		// 验证输出位置的纵坐标和横坐标
		if (x >= h || y >= w)
		{
			this.x = h - this.fontsize + 2;
			this.y = w;
		} else
		{
			this.x = x;
			this.y = y;
		}
		if (content != null)
		{
			g.drawString(content.toString(), this.x, this.y);
		}
		g.dispose();
	} catch (Exception e)
	{
		System.out.println(e.getMessage());
	}

	return img;
}

/**
* 修改图片,返回修改后的图片缓冲区(输出多个文本段) xory:true表示将内容在一行中输出;false表示将内容多行输出
*/
public BufferedImage modifyImage(BufferedImage img, Object[] contentArr,int x, int y, boolean xory)
{
	try
	{
		int w = img.getWidth();
		int h = img.getHeight();
		g = img.createGraphics();
		g.setBackground(Color.WHITE);
		g.setColor(Color.RED);
		if (this.font != null)
		g.setFont(this.font);
		// 验证输出位置的纵坐标和横坐标
		if (x >= h || y >= w)
		{
			this.x = h - this.fontsize + 2;
			this.y = w;
		} else
		{
			this.x = x;
			this.y = y;
		}
		if (contentArr != null)
		{
			int arrlen = contentArr.length;
			if (xory)
			{
				for (int i = 0; i < arrlen; i++)
				{
					g.drawString(contentArr[i].toString(), this.x, this.y);
					this.x += contentArr[i].toString().length()* this.fontsize / 2 + 5;//重新计算文本输出位置
				}
			} else
			{
				for (int i = 0; i < arrlen; i++)
				{
					g.drawString(contentArr[i].toString(), this.x, this.y);
					this.y += this.fontsize + 2;//重新计算文本输出位置
				}
			}
		}
		g.dispose();
	} catch (Exception e)
	{
		System.out.println(e.getMessage());
	}

	return img;
}

这也只是java.awt.Graphics2D的简单应用,感兴趣的网友可以参考JDK学习Graphics2D的应用,估计我们登陆时的验证图片就是用程序生成的,并且绑定了数字签名!
   发表时间:2007-10-08  
ImageIO
这个没有import?
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics