C#で画像を圧縮する方法は何ですか?
C#では、画像の圧縮を実現するためにSystem.Drawing名前空間のBitmapクラスを使用することができます。以下は、Bitmapクラスを使用して画像を圧縮する方法を示す簡単なサンプルコードです:
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
public static void CompressImage(string sourceImagePath, string outputImagePath, long quality)
{
using (Bitmap sourceImage = new Bitmap(sourceImagePath))
{
ImageCodecInfo jpgEncoder = GetEncoder(ImageFormat.Jpeg);
EncoderParameters encoderParameters = new EncoderParameters(1);
encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, quality);
sourceImage.Save(outputImagePath, jpgEncoder, encoderParameters);
}
}
private static ImageCodecInfo GetEncoder(ImageFormat format)
{
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();
foreach (var codec in codecs)
{
if (codec.FormatID == format.Guid)
{
return codec;
}
}
return null;
}
上記の例では、CompressImageメソッドは3つのパラメータを受け取ります:元画像のパスsourceImagePath、圧縮後の画像の保存パスoutputImagePath、および圧縮品質quality。メソッド内では、まずBitmapクラスを使用して元画像をロードし、次に圧縮エンコーダーとパラメータを設定し、最終的に圧縮した画像を指定されたパスに保存します。
重要なのは、qualityパラメータの値の範囲は通常0から100の間であり、値が大きいほど画像の品質が高くなります。適切な圧縮効果を得るために、実際のニーズに合わせてqualityの値を調整することができます。