gpt4 book ai didi

java - 使用 PDFBox 将图像转换为 byte[]

转载 作者:行者123 更新时间:2023-12-02 04:55:50 24 4
gpt4 key购买 nike

我正在使用 PDFBox 2.0。在解析 PDF 文档时,我还想获取第一页作为图像并将其存储到 hbase 以便在搜索结果中使用它(我将创建一个搜索列表页面,如 amazon.com 的搜索页面)。

HBase 接受 byte[] 变量来存储(索引)一个值。我需要将图像转换为byte[],然后将其存储到HBase。我已经实现了图像渲染,但是如何将其转换为byte[]?

        PDDocument document = PDDocument.load(file, "");
BufferedImage image = null;
try {
PDFRenderer pdfRenderer = new PDFRenderer(document);
if (document.isEncrypted()) {
try {
System.out.println("Trying to decrypt...);
document.setAllSecurityToBeRemoved(true);
System.out.println("The file has been decrypted in .");
}
catch (Exception e) {
throw new Exception("cannot be decrypted. ", e);
}
}
PDPage firstPage = (PDPage) document.getDocumentCatalog().getPages().get(0);
pdfRenderer.renderImageWithDPI(0, 300, ImageType.RGB);
// 0 means first page.

image = pdfRenderer.renderImageWithDPI(0, 300, ImageType.RGB);
document.close();

} catch (Exception e) {
e.printStackTrace();
}

如果我在 document.close(); 正上方写入 ImageIOUtil.writeImage(image , fileName+".jpg",300); ,程序会创建一个 jpg 文件在项目路径中。我需要将其放入 byte[] 数组中,而不是创建文件。是否可以?

最佳答案

这可以通过 ImageIO.write(Image, String, OutputStream) 来完成它可以写入任意 OutputStream 而不是磁盘。 ByteArrayOutputStream可以将输出字节存储到内存中的数组中。

import java.io.ByteArrayOutputStream;
...
// example image
BufferedImage image = new BufferedImage(4, 3, BufferedImage.TYPE_INT_ARGB);

// to array
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ImageIO.write(image, "jpg", bos);
byte [] output = bos.toByteArray();
System.out.println(Arrays.toString(output));

关于java - 使用 PDFBox 将图像转换为 byte[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36728789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com