文件在計(jì)算機(jī)中都是以二進(jìn)制保存的,但系統(tǒng)是以文件頭來(lái)區(qū)分各種文件格式的。
創(chuàng)新互聯(lián)建站是一家專(zhuān)注于成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),師宗網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專(zhuān)注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專(zhuān)業(yè)建站公司;建站業(yè)務(wù)涵蓋:師宗等地區(qū)。師宗做網(wǎng)站價(jià)格咨詢(xún):028-86922220
也就是說(shuō),僅僅更改后綴名是不行的。
按照你說(shuō)想的,可以這么來(lái)做:
1、讀取txt文本的每一行
2、創(chuàng)建BufferedImage圖片,然后在圖片上畫(huà)讀取到的文本
下面給出示例程序:
測(cè)試類(lèi) TextToImageExample.java
import?java.io.File;
import?java.util.Scanner;
/**
*?文本轉(zhuǎn)圖片測(cè)試類(lèi)
*?@author?YY2924?2014/11/18
*?@version?1.0
*/
public?class?TextToImageExample?{
public?static?void?main(String[]?args)?{
Scanner?in?=?new?Scanner(System.in);
System.out.print("輸入TXT文本名稱(chēng)?(例如:?D:/java.txt?):");
String?textFileName?=?in.nextLine();
System.out.print("輸入保存的圖片名稱(chēng)?(例如:?D:/java.jpg):");
String?imageFileName?=?in.nextLine();
TextToImage?convert?=?new?TextToImage(new?File(textFileName),?new?File(imageFileName));
boolean?success?=?convert.convert();
System.out.println("文本轉(zhuǎn)圖片:"?+?(success???"成功"?:?"失敗"));
}
}
文本轉(zhuǎn)圖片類(lèi) TextToImage.java
import?java.awt.Color;
import?java.awt.Font;
import?java.awt.Graphics;
import?java.awt.image.BufferedImage;
import?java.io.BufferedReader;
import?java.io.File;
import?java.io.FileNotFoundException;
import?java.io.FileOutputStream;
import?java.io.FileReader;
import?java.io.IOException;
import?com.sun.image.codec.jpeg.JPEGImageEncoder;
import?com.sun.image.codec.jpeg.JPEGCodec;
/**
*?文本轉(zhuǎn)圖片類(lèi)
*?@author?YY2924?2014/11/18
*?@version?1.0
*/
public?class?TextToImage?{
/**?文本文件??*/
private?File?textFile;
/**?圖片文件?*/
private?File?imageFile;
/**?圖片?*/
private?BufferedImage?image;
/**?圖片寬度??*/
private?final?int?IMAGE_WIDTH?=?400;
/**?圖片高度?*/
private?final?int?IMAGE_HEIGHT?=?600;
/**?圖片類(lèi)型??*/
private?final?int?IMAGE_TYPE?=?BufferedImage.TYPE_INT_RGB;
/**
*?構(gòu)造函數(shù)
*?@param?textFile?文本文件
*?@param?imageFile?圖片文件
*/
public?TextToImage(File?textFile,File?imageFile){
this.textFile?=?textFile;
this.imageFile?=?imageFile;
this.image?=?new?BufferedImage(IMAGE_WIDTH,?IMAGE_HEIGHT,?IMAGE_TYPE);
}
/**
*?將文本文件里文字,寫(xiě)入到圖片中保存
*?@return?boolean??true,寫(xiě)入成功;false,寫(xiě)入失敗
*/
public?boolean?convert()?{
//讀取文本文件
BufferedReader?reader?=?null;
try?{
reader?=?new?BufferedReader(new?FileReader(textFile));
}?catch?(FileNotFoundException?e)?{
e.printStackTrace();
return?false;
}
//獲取圖像上下文
Graphics?g?=?createGraphics(image);
String?line;
//圖片中文本行高
final?int?Y_LINEHEIGHT?=?15;
int?lineNum?=?1;
try?{
while((line?=?reader.readLine())?!=?null){
g.drawString(line,?0,?lineNum?*?Y_LINEHEIGHT);
lineNum++;
}
g.dispose();
//保存為jpg圖片
FileOutputStream?fos?=?new?FileOutputStream(imageFile);
JPEGImageEncoder?encoder?=?JPEGCodec.createJPEGEncoder(fos);
encoder.encode(image);
fos.close();
}?catch?(IOException?e)?{
e.printStackTrace();
return?false;
}
return?true;
}
/**
*?獲取到圖像上下文
*?@param?image?圖片
*?@return?Graphics
*/
private?Graphics?createGraphics(BufferedImage?image){
Graphics?g?=?image.createGraphics();
g.setColor(Color.WHITE);?//設(shè)置背景色
g.fillRect(0,?0,?IMAGE_WIDTH,?IMAGE_HEIGHT);//繪制背景
g.setColor(Color.BLACK);?//設(shè)置前景色
g.setFont(new?Font("微軟雅黑",?Font.PLAIN,?12));?//設(shè)置字體
return?g;
}
}
特別注意:程序中使用到了com.sun.image.codec.jpeg.JPEGImageEncoder和 com.sun.image.codec.jpeg.JPEGCodec ,這 兩個(gè)是sun的專(zhuān)用API,Eclipse會(huì)報(bào)錯(cuò)。
解決辦法:
Eclipse軟件,Windows-Preferences-Java-Complicer-Errors/Warnings,Deprecated and restricted API-Forbidden reference 改為 Warnning。
如果還是報(bào)錯(cuò),在工程上build path,先移除JRE System Library,然后再添加JRE System Library。
搜索添加spire.pdf.jar文件為依賴(lài),pdf轉(zhuǎn)圖片代碼如下:
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import com.spire.pdf.PdfDocument;
import javax.imageio.ImageIO;
public class toImage {
? public static void main(String[] args) throws IOException {
? ? ? //加載PDF文件
? ? ? PdfDocument doc = new PdfDocument();
? ? ? doc.loadFromFile("Sample.pdf");
? ? ? //保存PDF的每一頁(yè)到圖片
? ? ? BufferedImage image;
? ? ? for (int i = 0; i doc.getPages().getCount(); i++) {
? ? ? ? ? image = doc.saveAsImage(i);
? ? ? ? ? File file = new File( String.format("ToImage-img-%d.png", i));
? ? ? ? ? ImageIO.write(image, "PNG", file);
? ? ? }
? ? ? doc.close();
? }
}
首先導(dǎo)入各種需要的包:
import java.awt.Image;
import javax.imageio.ImageIO;
import java.io.*;
讀取圖片的方法如下:
Image[] array = new Image[10];
Image image = ImageIO.read(new File("d:\\source.gif"));//根據(jù)你實(shí)際情況改文件路徑吧
array[0] = image;
圖片讀出來(lái)了。
如果你有一個(gè)Image對(duì)象,想把它寫(xiě)入文件可以這樣做:
BufferedImage image = ImageIO.read(new File("d:\\source.gif"));
//要想保存這個(gè)對(duì)象的話你要把image聲明為BufferedImage 類(lèi)型
ImageIO.write(image, "png", new File("f:\\test.png"));