问题描述
我正在尝试使用System.Drawing.Image.FromFile
访问Umbraco媒体库中图像的EXIF元数据,虽然我可以使我的代码能够通过HDD上本地文件的路径来工作(例如c:\ example。 jpg)如果我在媒体库中传递某项的网址,则会收到文件未找到的异常。
我尝试将URL与http:// localhost:xxxx串联,但收到错误消息,提示格式不正确。我已经尝试过使用在线托管的图像的完整网址并获得相同的结果,这使我怀疑FromFile不接受网址。
我找不到任何文档来支持这种理论,而且似乎很愚蠢?
TL; DR为什么路径适用于System.Drawing.Image.FromFile
而不适用于网址?
这是我的代码:
var testimage = Model.Value<IPublishedContent>("testimage");
System.Drawing.Image image = System.Drawing.Image.FromFile(testimage.Url);
解决方法
我敢猜测,Image.FromFile需要一个正确的文件路径,而不是您提供的URL。
看看这个问题:ASP.NET Get physical filepath from URL,看看提供的选项之一是否对您有用。
所以你会做类似的事情
var testImage = Model.Value<IPublishedContent>("testImage");
var physicalPath = Server.MapPath(testImage.Url);
System.Drawing.Image image = System.Drawing.Image.FromFile(physicalPath);
(我没有对此进行测试,但我希望它能使您更近一些)