gpt4 book ai didi

java - 使用 getResource 在 java 中无法读取输入图像

转载 作者:行者123 更新时间:2023-12-02 09:59:47 25 4
gpt4 key购买 nike

我正在尝试将用户选择的图像添加到通过 netbeans 中的 pdfbox 生成的 pdf 中。如果我直接给出路径,那么它可以工作,但是获取图像路径的 url 并添加它不起作用。

查看给定的代码问题在于 URL 和路径,因为无法读取输入


public static ByteArrayOutputStream PDFGenerator(........,Path imagespath)
{
........
if (finalpdf.Images != null)
{
Path imagepath = Paths.get(imagespath.toString(), "room.png");
PDImageXObject Addedimage = PDImageXObject.createFromFile(imagepath.toString(), pdf);
AddImages(content, Addedimage, 229.14f, 9.36f);
}

//AddImages method is following
public static void AddImages(PDPageContentStream content, PDImageXObject image, float x, float y) throws IOException
{

content.drawImage(image, x, y);

}
}

//Following is snippet from my test method
public void testClass()
{
........
finalpdf.Images = "room.png";
URL imageurl = testclass.class.getResource("room.png");
Path imagepath = Paths.get(imageurl.getPath().substring(1));
ByteArrayOutputStream baos = PDFGenerator.generatefurtherpdf(finalpdf, "0000.00", "00.00", imagepath);

writePDF(baos, "YourPdf.pdf");

}

我希望它能以这种方式工作,但我确信它的路径存在一些问题,我没有正确使用它。我希望代码有足够的解释性,因为我很新,也有安全原因,所以我不能放置整个代码。抱歉,有错误

最佳答案

对于资源(绝不是File),存在一个通用类:Path

Path path = Paths.get(imageurl.toURI());

但是,每当该路径(例如使用 URL 'jar:file//... .jar!... ... .png")将用作文件时,path.toString( ) 建议,可以使用 InputStream。

第二个通用类是一个InputStream,它的级别更低:

InputStream in = TestClass.getResourceAsStream(imagepath);

这是从未使用过的getResource().openStream()的快捷方式。资源路径错误时抛出NullPointerException。

最后的办法是使用 createFromByteArray 的实际 byte[] .

byte[] bytes = Files.readAllBytes(path);
PDImageXObject Addedimage = PDImageXObject.createFromByteArray(doc, bytes, name);
<小时/>

使用临时文件

  Path imagepath2 = Files.createTempFile("room", ".png");
Files.copy(imagepath, imagepath2);
PDImageXObject Addedimage = PDImageXObject.createFromFile(imagepath2.toString(), pdf);

关于java - 使用 getResource 在 java 中无法读取输入图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55725515/

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