學習JAVA語言不到三個月,可能我比較蠢,一直沒有進步。
對於字符輸出到文件,通過參考資料和自己嘗試,我是基本掌握了;
但對於圖像輸出到文件,我還是頭一次接觸,不知從何入手,特此向諸位請教。具體來講,我想寫一個能實現如下基本功能的代碼:
字符:「字」;
字體:細明體;
字形:粗體;
大小:20;
顏色:白色;
圖片格式:BMP/JPG/PNG/GIF(其中之一);
圖片寬度:40;
圖片高度:40;
圖片底色:黑色;
字符在圖片位置為居中;
輸出的圖片是一個完整的文件(可讀寫),也就是說可以用相關的工具來查看和輯,而非以Applet的形式顯示。請精於此類編程的朋友指點,或提供實現此類功能的相關代碼以作參考,謝謝!
對於字符輸出到文件,通過參考資料和自己嘗試,我是基本掌握了;
但對於圖像輸出到文件,我還是頭一次接觸,不知從何入手,特此向諸位請教。具體來講,我想寫一個能實現如下基本功能的代碼:
字符:「字」;
字體:細明體;
字形:粗體;
大小: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();
} }
}
感謝yjgoo199先生給出的代碼...但是...
請問先生的代碼可運行於哪個JDK環境...
我以先生之代碼進行編碼時提示出錯...更請先生能否給予細詳的說明...
包括所調用的包,方法,語法上的具體說明...
我對圖像生成與文件輸出這方面真的是從零開始的...
因此...
如先生方便的話...還請先生細說...
我真的很需要好好地學習這方面的知識...謝謝...
编译和执行很顺利。
使用的包和类都是jdk中自带的。
帮助文档中都有帮助。
import com.sun.image.codec.jpeg.ImageFormatException;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
这几个类帮助中没有。注释中对使用到的方法也基本解释了。
如有深入学习的需要,绘图的部分基本上就是Graphics类了。看看帮助即可。
如果编译还出错,请把异常信息发出来。我看看,呵呵。
余萬分抱歉...緣工作較忙...
幾忘予先生結帳...
亦無時能細習先生之代碼...
實感無奈...
余甚愧已...
望先生諒...再提幾問...
即圖像輸出格式之問...
何以輸出BMP格式?
何以輸出PNG格式?
何以輸出WBMP格式?
何以輸出GIF格式?
希能予余解答...尚時...余得查無果...
又以網上之訊息無多...
然得知一鑒...乃PCX格式之編碼及反編碼資料...
實為偽代碼之形式...余惑之...請先生指教...
資料請鏈接此頁...
http://www.informit.com/articles/article.aspx?p=684049&f1=rss&rl=1余之最終目的實乃輸出PCX格式文檔矣...
其間雖可以第三方軟體轉換之...
然以上萬數之文檔得以轉換...實為杯水車薪...
呼...先生能助之...
再以分40為謝...
输出成BMP格式可以使用ImageIO类。
PCX这种图片格式太老了,还没找到已经实现的转换方法,自己写的话得了解各种图片的格式。比较困难。
我也很少有机会做这方面的,所以可能很难帮助到您。
尽量帮你看看吧。