2016-07-14 10 views
0

c#asp.net coreで任意のタイプ(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のforicialブログで見つけました。あなたはSystem.Drawingに頼る既存のコードをしている場合は、このライブラリを使用すると、明らか.NET Coreおよびクロスプラットフォームの至福へのあなたの最も速いパスです

を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を使用しています。 .Net Coreをサポートしており、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);