London Dev Meetup Rescheduled! Due to unavoidable reasons, the event has been moved to 21st May. Speakers remain the same—any changes will be communicated. Seats are limited—register here to secure your spot!
AI OnAI Off
London Dev Meetup Rescheduled! Due to unavoidable reasons, the event has been moved to 21st May. Speakers remain the same—any changes will be communicated. Seats are limited—register here to secure your spot!
Can you try with
System.Drawing.Image.FromStream(stream, false, false);
this ignore the format of the stream
Setting validateImageData boolean FALSE has the same effect: large PNG files throw an error, whereas small PNG files and JPG files work fine.
Thanks Valdis Iljuconoks; what would I have to convert into what in that case?
if I skip my laziness and think once more, there could be 2 options to solve this:
1) using image converter:
using (var stream = img.BinaryData.OpenRead()) { var ic = new System.Drawing.ImageConverter(); var img = (System.Drawing.Image)ic.ConvertFrom(stream.ReadAllBytes()); }
2) or try to load up binary data into memory stream first:
using (var stream = img.BinaryData.OpenRead()) { using(var memStream = new MemoryStream()) { stream.CopyTo(memStream); memStream.Position = 0; var image = System.Drawing.Image.FromStream(memStream, false); image.Dispose(); } }
however, just to note that I was able to load up 1Mb png image using your code fragment above..
When I try to use a Stream created using [media].BinaryData.OpenRead(), I get the following exception trying to load that stream into an Image object:
Parameter is not valid.
at System.Drawing.Image.FromStream(Stream stream, Boolean useEmbeddedColorManagement, Boolean validateImageData)
at System.Drawing.Image.FromStream(Stream stream)
at ###.Controllers.HomePageController.LoadImages() in ###\HomePageController.cs:line 48
This only occurs for PNG files that are bigger than usual (in this case a file of 4.815 Kb), JPG files work fine.
Here is the (simplified) sample code:
var content = ServiceLocator.Current.GetInstance().Get(imageContentReference);
If I try to load the exact same image using native .NET code it also works fine: