ImageResize icon indicating copy to clipboard operation
ImageResize copied to clipboard

Image resizing exception: System.PlatformNotSupportedException: System.Drawing.Common is not supported on this platform.

Open sunsiz opened this issue 1 year ago • 3 comments

Describe the bug When running on Linux the Scale method throw: "Image resizing exception: System.PlatformNotSupportedException: System.Drawing.Common is not supported on this platform." exception. As in docs explained I have installed libc6-dev and libgdiplus libraries.

There is also another issue if path is contains backslash like this: Path.Combine(webRootPath, @"images\artist"); it will throw directory not found exception on Linux, as a workaround I have changed the backslash to forward slash it worked.

To Reproduce Steps to reproduce the behavior:

  1. Run the application on Linux
  2. Scale an image while uploading
  3. If not debugging or on server you can see the errors in logs.

Expected behavior ***** Image resizing exception: System.PlatformNotSupportedException: System.Drawing.Common is not supported on this platform. at System.Drawing.Image.FromStream(Stream stream)

Screenshots If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: Debian 5.10.209-2 (2024-01-31) x86_64 GNU/Linux
  • Browser Chrome
  • Version LazZiya.ImageResize 4.1.4

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

Additional context Example code block looks like this:

var uploads = Path.Combine(webRootPath, @"images/artist");
var fileName = file.FileName;
var namePart = fileName.Remove(fileName.LastIndexOf('.'));
var extension = fileName.Substring(fileName.LastIndexOf('.'));
using var fileStream = new FileStream(Path.Combine(uploads, fileName), FileMode.Create);
file.CopyTo(fileStream);
using var img = Image.FromStream(fileStream);
img.Scale(384, 384).SaveAs(Path.Combine(uploads, namePart + "-384" + extension));

sunsiz avatar Apr 20 '24 16:04 sunsiz

Which .net version you are using?

LazZiya.ImageResize depends on System.Drawing.Common starting .net6 it is only supported on windows, due to numerous issues reported to libgdiplus that never got fixed!

LazZiya avatar Apr 21 '24 12:04 LazZiya

Oh, I used .net 8.0. Is there any other known workaround for it?

sunsiz avatar Apr 22 '24 19:04 sunsiz

Not sure if this will work; create a class library project targeting lower .net framework and install ImageResize nuget. Then add a reference to your project!?

LazZiya avatar Apr 25 '24 16:04 LazZiya