当前位置: 代码迷 >> J2SE >> 怎么將字符以特定屬性保存輸出到圖片文件中
  详细解决方案

怎么將字符以特定屬性保存輸出到圖片文件中

热度:578   发布时间:2016-04-24 14:11:07.0
如何將字符以特定屬性保存輸出到圖片文件中
學習JAVA語言不到三個月,可能我比較蠢,一直沒有進步。
對於字符輸出到文件,通過參考資料和自己嘗試,我是基本掌握了;
但對於圖像輸出到文件,我還是頭一次接觸,不知從何入手,特此向諸位請教。

具體來講,我想寫一個能實現如下基本功能的代碼:
字符:「字」;
字體:細明體;
字形:粗體;
大小:20;
顏色:白色;
圖片格式:BMP/JPG/PNG/GIF(其中之一);
圖片寬度:40;
圖片高度:40;
圖片底色:黑色;
字符在圖片位置為居中;
輸出的圖片是一個完整的文件(可讀寫),也就是說可以用相關的工具來查看和輯,而非以Applet的形式顯示。

請精於此類編程的朋友指點,或提供實現此類功能的相關代碼以作參考,謝謝!

------解决方案--------------------
写一个给你,写得不怎么样,呵呵,基本达到要求吧。
package io;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import com.sun.image.codec.jpeg.ImageFormatException;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

/**
* 构造图片输出
*/
public class TextImage {
public static void main(String[] args) {
String text = "字 ";// 要输出的文本
try {
//检查文件夹
File d = new File( "d:\\image ");
if (!d.exists()) {
d.mkdir();// 如果文件夹不存在,就构造一个
}
// 构造文件流
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream( "d:\\image "+File.separator+ "img.jpg "));

int width = 40;//图片宽
int height = 40;//高
BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);//构造图片缓冲区
Graphics g = image.getGraphics();//获取画板
//设置字体
g.setFont(new Font( "宋体 ",Font.BOLD,12));
//设置画笔颜色为黑色
g.setColor(Color.black);
//绘制背景
g.fillRect(0, 0, width, height);
//设置画笔颜色为白色
g.setColor(Color.white);
//绘制文本
g.drawString(text, width / 2 - (text.length()*6), height / 2+6);
//释放此图形的上下文并释放它所使用的所有系统资源。
g.dispose();
// 在输出流中创建一个jpeg编码器
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bos);
// 将图片编码成一个jpeg数据流
encoder.encode(image);
// 关闭前输出一张图片
bos.close();

} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ImageFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}
  相关解决方案