Skip to content

Commit

Permalink
Merge pull request #10494 from abpframework/EngincanV/blogging-images…
Browse files Browse the repository at this point in the history
…harp

Blogging: Replace System.Drawing with ImageSharp package
  • Loading branch information
ebicoglu committed Nov 2, 2021
2 parents d89ae66 + 491f1a7 commit ac357ae
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,10 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="System.Drawing.Common" Version="4.7.0" />
<PackageReference Include="SixLabors.ImageSharp" Version="1.0.4" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\Volo.Blogging.Admin.Application.Contracts\Volo.Blogging.Admin.Application.Contracts.csproj" />
<ProjectReference Include="..\Volo.Blogging.Domain\Volo.Blogging.Domain.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.AutoMapper\Volo.Abp.AutoMapper.csproj" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,12 @@
<PackageId>Volo.Blogging.Application</PackageId>
<RootNamespace />
</PropertyGroup>

<ItemGroup>
<PackageReference Include="SixLabors.ImageSharp" Version="1.0.4" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="System.Drawing.Common" Version="$(MicrosoftPackageVersion)" />
<ProjectReference Include="..\Volo.Blogging.Application.Contracts\Volo.Blogging.Application.Contracts.csproj" />
<ProjectReference Include="..\Volo.Blogging.Domain\Volo.Blogging.Domain.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.AutoMapper\Volo.Abp.AutoMapper.csproj" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,24 @@
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Drawing.Imaging;
using System.Linq;
using SixLabors.ImageSharp.Formats;
using SixLabors.ImageSharp.Formats.Bmp;
using SixLabors.ImageSharp.Formats.Gif;
using SixLabors.ImageSharp.Formats.Jpeg;
using SixLabors.ImageSharp.Formats.Png;

namespace Volo.Blogging.Files
{
public class FileUploadConsts
{
public static readonly ICollection<ImageFormat> AllowedImageUploadFormats = new Collection<ImageFormat>
public static readonly ICollection<IImageFormat> AllowedImageUploadFormats = new Collection<IImageFormat>
{
ImageFormat.Jpeg,
ImageFormat.Png,
ImageFormat.Gif,
ImageFormat.Bmp
JpegFormat.Instance,
PngFormat.Instance,
GifFormat.Instance,
BmpFormat.Instance,
};

public static string AllowedImageFormatsJoint => string.Join(",", AllowedImageUploadFormats.Select(x => x.ToString()));
public static string AllowedImageFormatsJoint => string.Join(",", AllowedImageUploadFormats.Select(x => x.Name));
}
}
Original file line number Diff line number Diff line change
@@ -1,27 +1,33 @@
using System.Collections.Generic;
using System.Drawing.Imaging;
using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.InteropServices;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Formats;

namespace Volo.Blogging.Areas.Blog.Helpers
{
public class ImageFormatHelper
{
public static ImageFormat GetImageRawFormat(Stream stream)
public static IImageFormat GetImageRawFormat(Stream stream)
{
return System.Drawing.Image.FromStream(stream).RawFormat;
using (var image = Image.Load(stream, out var imageFormat))
{
return imageFormat;
}
}

public static bool IsValidImage(Stream stream, ICollection<ImageFormat> validFormats)
public static bool IsValidImage(Stream stream, ICollection<IImageFormat> validFormats)
{
// System.Drawing only works on windows => https://docs.microsoft.com/en-us/dotnet/api/system.drawing.image?view=net-5.0#remarks
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
try
{
var imageFormat = GetImageRawFormat(stream);

return validFormats.Contains(imageFormat);
}

return true;
catch (Exception e)
{
return false;
}
}
}
}

0 comments on commit ac357ae

Please sign in to comment.