如何在.NET中获取Properties.Resources.Image的路径

4 浏览
0 Comments

如何在.NET中获取Properties.Resources.Image的路径

我在这篇帖子后面附上了一张图片作为资源:\n如何在.NET中创建和使用资源。\n我正在使用PDFSharp库创建PDF。绘制图片的方法需要图片的路径。如何获取Properties.Resources.Image的路径呢?\n还是有其他方法可以做到这一点吗?

0
0 Comments

问题的原因是因为在使用MigraDoc时,需要传递一个图片路径的字符串参数,但实际上并不需要使用路径来加载图片。PDFsharp不需要文件名,因为可以从流中读取图片。MigraDoc仍然需要一个字符串参数,但你可以将图片数据编码为BASE64格式的字符串,并将该字符串作为文件名传递。

解决方法如下:

1. 将图片数据编码为BASE64格式的字符串。

2. 将该字符串作为参数传递给MigraDoc的相关方法。

具体实现可以参考以下链接:http://pdfsharp.net/wiki/MigraDoc_FilelessImages.ashx

0
0 Comments

问题原因:在XImage.cs文件中,FromGdiPlusImage方法被注释掉了,导致无法使用该方法。

解决方法:可以尝试通过其他方式获取Properties.Resources.Image的路径。

0
0 Comments

问题的原因是Properties.Resources.Image是一个内存资源,无法直接获取其路径。解决方法是将图片保存为临时文件,然后获取其路径。代码如下:

var path = Path.GetTempPath();
Properties.Resources.logo.Save(path);

上述代码使用了Bitmap.Save方法。如果是一个图片,应该使用File.WriteAllBytes而不是WriteAllText来保存。不应该将二进制数据当作字符串处理,可能会出现奇怪的问题。

当我尝试使用下面的代码时:

File.WriteAllBytes(path, Properties.Resources.logo;);

我会得到invalid expression term的错误。如果使用下面的代码:

File.WriteAllBytes(path, Properties.Resources.logo);

会得到以下错误:1) The best overloaded method match for System.IO.File.WriteAllBytes has invalid arguments. 2) Argument 2: cannot convert from System.Drawing.Bitmap to byte[].

这说明了在保存时遇到了一些问题。通常情况下,GDI+会因为各种原因抛出OutOfMemoryException异常。

你可以将资源文件配置成将数据存储为二进制blob(byte[])而不是GDI+的Bitmap对象,这样使用File.WriteAllBytes方法保存会更好。

另外,你需要在路径中添加一个文件名,比如"sampleImg.png"。我曾经遇到过同样的问题,通过这样做解决了问题。

0