0
votes

I'm trying to access EXIF metadata for images in my Umbraco Media Library using System.Drawing.Image.FromFile and whilst I can get my code to work passing a path for a local file on my HDD (e.g. c:\example.jpg) I get a file not found exception if I pass the URL for an item in my media library. I have tried concatenating the URL with http://localhost:xxxx, and I get an error that the format is incorrect. I've tried this with a full Url of an image hosted online and get same, which leads me to suspect that FromFile doesn't accept an Url. I can't find any documentation to support this theory though, and it seems, dumb?

TL;DR why does a path work for System.Drawing.Image.FromFile but not a Url?

Here's my code:

var testImage = Model.Value<IPublishedContent>("testImage");
System.Drawing.Image image = System.Drawing.Image.FromFile(testImage.Url);
1

1 Answers

0
votes

I'd venture a guess that Image.FromFile needs a proper file path and not a URL like the one you're providing.

Have a look at this question: ASP.NET Get physical filepath from URL and see if one of the provided options work for you.

So you'd do something like

var testImage = Model.Value<IPublishedContent>("testImage");
var physicalPath = Server.MapPath(testImage.Url);
System.Drawing.Image image = System.Drawing.Image.FromFile(physicalPath);

(I didn't test that, but I hope it gets you somewhere closer)