回答
這是一種方法。
- 獲取(或製作)可呈現相關文件的Java組件。
- 創建與組件需要顯示圖像相同尺寸的
BufferedImage
。 - 從
BufferedImage
獲取Graphics
對象。 - 致電
renderComponent.paintComponent(Graphics)
- 使用
ImageIO.write()
變體之一保存圖像。
請參閱我對Swing: Obtain Image of JFrame的回答,以獲取步驟2-5。第一步是我要問Google的。
可以告訴我一段代碼..所以我可以理解..我無法創建一個圖像(java.awt.Image)出有問題的文件。這再次引發了創建BufferedImage的問題。希望你明白。 – pinkb
Batik library是一個工具包,用於處理Java中的SVG。有像WMFTranscoder這樣的轉換器將WMF轉換爲SVG,JPEGTranscoder和PNGTranscoder將SVG轉換爲JPEG/PNG。有關更多詳情,請參閱Transcoder API Docs。
另一種選擇是ImageMagick。它不是Java,但具有Java綁定:im4java和JMagick。
wmf是矢量文件格式。爲獲得最佳效果,請將它們轉換爲.svg
或.pdf
格式。 我做到了在兩個階段
1)wmf2fig --auto XXXX.wmf
2)fig2pdf --nogv XXXX.fig
我創建一個Python腳本批量轉換
import subprocess as sbp
a = sbp.Popen("ls *.wmf",shell=True, stderr=sbp.PIPE, stdout=sbp.PIPE)
filelist = a.communicate()[0].splitlines()
for ele in filelist:
cmdarg = 'wmf2fig --auto '+ ele.rsplit('.',1)[0]+'.wmf'
a = sbp.Popen(cmdarg, shell=True, stderr=sbp.PIPE, stdout=sbp.PIPE)
out = a.communicate()
for ele in filelist:
cmdarg = 'fig2pdf --nogv '+ ele.rsplit('.',1)[0]+'.fig'
a = sbp.Popen(cmdarg, shell=True, stderr=sbp.PIPE, stdout=sbp.PIPE)
out = a.communicate()
cmdarg = 'rm *.fig'
a = sbp.Popen(cmdarg, shell=True, stderr=sbp.PIPE, stdout=sbp.PIPE)
out = a.communicate()
儘管答案並不是關於Java,但我同意最好將轉換後的結果保留爲向量。 Batik將能夠轉換爲SVG。 – haraldK
我前段時間創建了一些蠟染包裝的包裝(如vanje's answer所述),該包裝爲SGV和WMF/EMF提供ImageIO支持。
有了這些插件,你應該能夠編寫:
ImageIO.write(ImageIO.read(wmfFile), pngFile, "png");
的源代碼上GitHub。
雖然ImageIO插件很方便,但im4java和JMagick可能仍然有更好的格式支持。
如果您在Windows環境中部署應用程序,則SWT可以爲您處理轉換。
Image image = new Image(Display.getCurrent(), "test.wmf");
ImageLoader loader = new ImageLoader();
loader.data = new ImageData[] { image.getImageData() };
try(FileOutputStream stream = new FileOutputStream("test.png"))
{
loader.save(stream, SWT.IMAGE_PNG);
}
image.dispose();
SWT的目的是提供圍繞本地功能的Java包裝,在這種情況下,它調用Windows GDI直接得到它呈現WMF。
- 1. 如何將iPhone的png文件轉換爲使用java的標準PNG文件
- 2. 如何在Windows中使用java將webp轉換爲png或jpg?
- 3. 將InDesign文件轉換爲圖像的Java庫(jpg,png等)
- 4. 如何在Windows上使用Perl將WMF圖像轉換爲PNG或JPG格式?
- 5. 如何使用dcm4che-3.2.1將JPG圖像轉換爲DICOM文件?
- 6. 將jpg/png/txt或任何文件格式轉換爲pdf使用mvc5
- 7. 使用java或任何API將HTML頁轉換爲MS字
- 8. 將SVG轉換爲圖像(PNG,JPG)
- 9. 如何將rtf轉換爲圖像格式(jpg/png ..)
- 10. 如何將Base64 PNG轉換爲JPG圖像?
- 11. 如何將圖像(GIF,JPG,JPEG,PNG)轉換爲PHP中的TIFF?
- 12. 將SVG流轉換爲png或jpg
- 13. 如何將PDF圖像轉換爲JPG或Magento中的任何圖像
- 14. 如何將jpg或png文件轉換爲帶有多個圖層的psd?
- 15. 將png或jpg圖像轉換爲Android中的Base64字符串
- 16. 如何將圖像保存爲jpg或png使用timthumb.php調整大小API
- 17. 回形針 - 將tiff圖像轉換爲jpg或png
- 18. 如何將clusterw .dnd文件轉換爲圖像(PNG)文件?
- 19. 如何將文件Freehand文件轉換爲JPG格式圖像或.SVG
- 20. 如何將我的php代碼(使用SyntaxHighlight)轉換爲圖像(如jpeg或png)
- 21. 將透明度的png圖像轉換爲jpg破壞圖像
- 22. 如何使用Imagemagick將.PDF文件轉換爲.PNG PHP api
- 23. 如何把.SFF文件格式轉換爲.BMP或者.PNG或者.JPG文件?
- 24. 紅寶石:如何字節數組轉換爲圖像文件(爲.jpg,.png ...)
- 25. 將png轉換爲jpg並下載jpg圖像
- 26. 是否有將DWG轉換爲任何標準圖像格式的API或庫?
- 27. 如何將jpg或png轉換爲IOS中的svg?
- 28. 如何使用Ghostscript將psd(photoshop文件)或tiff轉換爲PNG?
- 29. 如何使用java將PNG文件轉換爲PDF?
- 30. 如何將p:圖表類型「行」導出爲png或jpg文件的圖像?
產生WMF/EMF圖像的人應該被槍殺,但它的價值在於:我確信美妙的(和免費的)* ImageMagick *曾經能夠轉換WMF文件。也曾經是ImageMagick的Java包裝(如果內存服務,稱爲JMagick)。所以你可能想看看那裏。這就是說我記得WMF/EMF只是各種格式的「炮彈」或「包裝器」,所以它可能是一個移動的目標,並且很可能有很多不同的WMF/EMF文件,而我我真的不確定這是否仍然正確處理。它曾經工作,說...... – SyntaxT3rr0r