2016-07-14 3 views
0

누구든지 C# asp.net 코어에서 모든 유형 (jpg, png, gif 등)의 이미지를 압축하는 방법을 알고 있습니까? WebP는 코어에서 작동하지 않습니다. ImageProcessor Core 라이브러리를 다운로드했지만 압축/축소하는 방법을 알 수 있습니다. 그것들은 우리가 사용할 수있는 코드의 일부이지만 실제로 기능적이지는 않습니다.C# asp.net 코어 압축 이미지

newImage.Quality = old_image.Quality-20; 
    newImage.HorizontalResolution = 0; 
    newImage.VerticalResolution = 0; 
+0

참조하십시오이 (가 몇 가지 방법이 있습니다) : http://stackoverflow.com/questions/4427059/how-to-change-resolution-dpi-of-an-image –

답변

0

동일한 솔루션을 찾고 있는데, MSDN 공식 블로그에서 찾았습니다.

이 라이브러리가 명확 .NET 코어 및 크로스 플랫폼 행복에 가장 빠른 경로 사용 System.Drawing에 의존하는 기존 코드를 한 경우

을 CoreCompat.System.Drawing : 성능과 품질이 좋은이며, API는 완전히 동일합니다. 내장 된 System.Drawing API는 .NET Framework를 사용하여 이미지를 처리하는 가장 쉬운 방법이지만 .NET Core에는 포함되지 않은 Windows의 GDI + 기능에 의존하며 다중으로 설계되지 않은 클라이언트 기술입니다 쓰레드 된 서버 환경. 이 솔루션을 응용 프로그램에 적합하지 않게 만드는 잠금 문제가 있습니다.

using System.Drawing; 

const int size = 150; 
const int quality = 75; 

using (var image = new Bitmap(System.Drawing.Image.FromFile(inputPath))) 
{ 
    int width, height; 
if (image.Width > image.Height) 
{ 
    width = size; 
    height = Convert.ToInt32(image.Height * size/(double)image.Width); 
} 
else 
{ 
    width = Convert.ToInt32(image.Width * size/(double)image.Height); 
    height = size; 
} 
var resized = new Bitmap(width, height); 
using (var graphics = Graphics.FromImage(resized)) 
{ 
    graphics.CompositingQuality = CompositingQuality.HighSpeed; 
    graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; 
    graphics.CompositingMode = CompositingMode.SourceCopy; 
    graphics.DrawImage(image, 0, 0, width, height); 
    using (var output = File.Open(
     OutputPath(path, outputDirectory, SystemDrawing), FileMode.Create)) 
    { 
     var qualityParamId = Encoder.Quality; 
     var encoderParameters = new EncoderParameters(1); 
     encoderParameters.Param[0] = new EncoderParameter(qualityParamId, quality); 
     var codec = ImageCodecInfo.GetImageDecoders() 
      .FirstOrDefault(codec => codec.FormatID == ImageFormat.Jpeg.Guid); 
     resized.Save(output, codec, encoderParameters); 
    } 
} 
} 

참조 : https://blogs.msdn.microsoft.com/dotnet/2017/01/19/net-core-image-processing/

0

우리는 JPEG, GIF 및 PNG 이미지를 압축 할 Magic.Net를 사용합니다. 그것은 닷넷 코어를 지원하며 Nuget을 통해 사용 가능합니다.

예 :

var file = new FileInfo(fileName); 

Console.WriteLine("Bytes before: " + file.Length); 

var optimizer = new ImageOptimizer(); 
optimizer.Compress(file); 

file.Refresh(); 
Console.WriteLine("Bytes after: " + file.Length);