.NET で画像イメージを JPEG に変換する方法

.NET で画像イメージ (Bitmap のインスタンス) を JPEG データのバイトデータにメモリ内で変換するには、以下のようにするとよい。

public static byte[] SaveAsJpeg(Bitmap bmp, int quality)
{
	EncoderParameters eps = new EncoderParameters(1);
	EncoderParameter ep = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
	eps.Param[0] = ep;

	ImageCodecInfo info = getEncoderInfo("image/jpeg");

	MemoryStream ms = new MemoryStream();
	bmp.Save(ms, info, eps);

	return ms.ToArray();
}

static ImageCodecInfo getEncoderInfo(string type)
{
	ImageCodecInfo[] encs = ImageCodecInfo.GetImageEncoders();
	foreach (ImageCodecInfo enc in encs)
	{
		if (enc.MimeType == type)
		{
			return enc;
		}
	}
	return null;
}


なお、「quality」は JPEG の画質を意味する整数で、1 から 100 のうち任意の数を指定する。