C#で画像を固定サイズに圧縮する方法は何ですか?
C#のSystem.Drawing名前空間を使用して画像を圧縮することができます。以下は指定されたサイズに画像を圧縮する方法を示す簡単なサンプルコードです。
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
public class ImageCompressor
{
public void CompressImage(string sourcePath, string outputPath, int maxWidth, int maxHeight)
{
using (Image sourceImage = Image.FromFile(sourcePath))
{
double aspectRatio = (double)sourceImage.Width / sourceImage.Height;
int newWidth = maxWidth;
int newHeight = (int)(maxWidth / aspectRatio);
if (newHeight > maxHeight)
{
newHeight = maxHeight;
newWidth = (int)(maxHeight * aspectRatio);
}
using (Bitmap compressedImage = new Bitmap(newWidth, newHeight))
{
using (Graphics graphics = Graphics.FromImage(compressedImage))
{
graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
graphics.DrawImage(sourceImage, 0, 0, newWidth, newHeight);
}
compressedImage.Save(outputPath, ImageFormat.Jpeg);
}
}
}
}
class Program
{
static void Main()
{
ImageCompressor compressor = new ImageCompressor();
compressor.CompressImage("source.jpg", "compressed.jpg", 800, 600);
}
}
上記のサンプルコードでは、CompressImageメソッドが元画像のパス、出力先のパス、および目標の幅と高さをパラメーターとして受け取ります。アルゴリズムは、目標の幅と高さに適した画像サイズを計算し、元の画像をそのサイズに圧縮してJPEG形式で保存します。必要に応じて、圧縮品質や出力形式を調整することができます。