Je veux redimensionner une image et enregistrer cette image plusieurs fois avec différentes tailles dans un dossier. J'ai essayé ImageResizer ou CoreCompat.System.Drawing mais ces bibliothèques ne sont pas compatibles avec .Net core 2. J'ai beaucoup cherché à ce sujet mais je ne trouve pas de solution appropriée. comme dans MVC4 j'ai utilisé comme:
public ActionResult Upload(HttpPostedFileBase file)
{
if (file != null)
{
var versions = new Dictionary<string, string>();
var path = Server.MapPath("~/Images/");
//Define the versions to generate
versions.Add("_small", "maxwidth=600&maxheight=600&format=jpg";);
versions.Add("_medium", "maxwidth=900&maxheight=900&format=jpg");
versions.Add("_large", "maxwidth=1200&maxheight=1200&format=jpg");
//Generate each version
foreach (var suffix in versions.Keys)
{
file.InputStream.Seek(0, SeekOrigin.Begin);
//Let the image builder add the correct extension based on the output file type
ImageBuilder.Current.Build(
new ImageJob(
file.InputStream,
path + file.FileName + suffix,
new Instructions(versions[suffix]),
false,
true));
}
}
return RedirectToAction("Index");
}
mais dans Asp.Net core 2.0, je suis bloqué. je n'ai aucune idée de comment je peux implémenter cela dans .Net core 2. N'importe qui s'il vous plaît peut m'aider.
Vous pouvez obtenir le paquet nuget SixLabors.ImageSharp (n'oubliez pas de cocher "Inclure les versions préliminaires" car maintenant ils n'ont que la version bêta) et utilisez leur bibliothèque comme celle-ci. Leur GitHub
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Processing;
// Image.Load(string path) is a shortcut for our default type.
// Other pixel formats use Image.Load<TPixel>(string path))
using (Image<Rgba32> image = Image.Load("foo.jpg"))
{
image.Mutate(x => x
.Resize(image.Width / 2, image.Height / 2)
.Grayscale());
image.Save("bar.jpg"); // Automatic encoder selected based on extension.
}
.NET Core 2.0 est livré avec System.Drawing.Common, qui est l'implémentation officielle de System.Drawing pour .NET Core.
Au lieu de CoreCompat.System.Drawing, pouvez-vous essayer d'installer System.Drawing.Common et vérifier si cela fonctionne?
Traitement d'image dans .NET Core: https://blogs.msdn.Microsoft.com/dotnet/2017/01/19/net-core-image-processing/