将com.itextpdf.text.Image保存为图像文件

3
有没有一种方法可以将“com.itextpdf.text.Image”文件保存为文件系统上的jpg文件?
Barcode39 code39 = new Barcode39();
code39.setCode(barcode);
code39.setStartStopText(false);
image39 = code39.createImageWithBarcode(cb, null, null);
image39.scaleAbsolute(width, height);
image39.setAbsolutePosition(top, left);
cb.addImage(image39);

我正在创建一个条形码图像,并将其添加到PDF中。同时,我希望该图像被保存在文件系统中。非常感谢您的帮助。
或者,是否有可能使用iText从PDF中检索条形码(包括下面的数字),并将其作为图像文件保存到文件系统中?

不行,可以是png格式。 - Adarsh
抱歉,在我发布帖子后立即意识到您需要的是itext图像文件... 很抱歉! - TheJavaCoder16
2个回答

6

只需使用createAwtImage将Barcode39 itext图像转换为AWT图像:

java.awt.Image awtImage = code39.createAwtImage(Color.BLACK, Color.WHITE);

然后将其转换为BufferedImage并存储:
BufferedImage bImage= new BufferedImage(awtImage.getWidth(), awtImage.getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics2D g = bImage.createGraphics();
g.drawImage(awtImage, 0, 0, null);
g.dispose();

ImageIO.write(bImage, "jpg", new File("code39.jpg"));

谢谢,这很有帮助。还有一件事,ImageIO.write需要一个RenderedImage对象,所以我需要传递BufferedImage对象而不是awtImage对象。 - Adarsh
@sina72,iText7怎么样?我无法设置图像尺寸并保存为图像文件,你能帮忙吗? - webyildirim

2
你可以使用以下代码:
BarcodeQRCode qrcode = new BarcodeQRCode("testo testo testo", 1, 1, null);
Image image = qrcode.createAwtImage(Color.BLACK, Color.WHITE);

BufferedImage buffImg = new BufferedImage(image.getWidth(null), image.getWidth(null), BufferedImage.TYPE_4BYTE_ABGR);
buffImg.getGraphics().drawImage(image, 0, 0, null);
buffImg.getGraphics().dispose();

File file = new File("tmp.png");
ImageIO.write(buffImg, "png", file);

我希望你能够从中受益。Enrico

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接