java swing中如何把JTextArea 导出成为一张图片(jpg或png)呢?
核心方法:
/***
* convert JTextArea to image
* @param ta
* @param destFile
* @param format
*/
public static File genericImage(JTextArea ta,File destFile,String format){//TODO 如何提高分辨率
BufferedImage img = new BufferedImage(ta.getWidth(), ta.getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = img.createGraphics();
ta.printAll(g2d);
g2d.dispose();
try {
ImageIO.write(img, format/*"jpg"*/, destFile);
} catch (IOException ex) {
ex.printStackTrace();
}
return destFile;
}
调用:
private void chooseDestFile(JTextArea ta,String picFormat){
JFileChooser chooser = new JFileChooser();
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
File selectedFile=new File("C:\\Users\\Administrator\\Pictures\\"+TimeHWUtil.formatDate(new Date(), "yyyyMM"));
//home目录应该动态获取
// System.out.println(selectedFile.getAbsolutePath());
if(!ValueWidget.isNullOrEmpty(selectedFile)){
chooser.setSelectedFile(selectedFile);
}
chooser.setName("二维码."+picFormat);
FileNameExtensionFilter filter = new FileNameExtensionFilter(
"picture Files", picFormat, "二维码");
chooser.setFileFilter(filter);
chooser.setDialogType(JFileChooser.SAVE_DIALOG);
chooser.setControlButtonsAreShown(true);
chooser.setDialogTitle("保存二维码");
// chooser.setVisible(true);
int result = chooser.showSaveDialog(ta);
System.out.println("New file:" + result);
if (result == JOptionPane.OK_OPTION)
{
selectedFile = chooser.getSelectedFile();
if(! SystemHWUtil.isHasSuffix(selectedFile)){
selectedFile=new File(selectedFile.getAbsolutePath()+ SystemHWUtil.ENGLISH_PERIOD+picFormat);
}
ImageHWUtil.genericImage(ta, selectedFile, picFormat);
System.out.println("select file:" + selectedFile);
}
}
??
界面如下图:
?
可执行的jar包见附件
参考:http://stackoverflow.com/questions/11894064/java-converting-a-string-in-jtextarea-to-an-image
http://stackoverflow.com/questions/23568114/converting-text-to-image-in-java
http://myjeeva.com/convert-image-to-string-and-string-to-image-in-java.html
原文:http://hw1287789687.iteye.com/blog/2230405