可能な限り最速の方法でプログラムで画像の品質を下げようとしています。現在、から画像を読み取ることができますbyte[]
。次に、それをMemoryStream
読み取って、目的のに保存するときに品質Bitmap
をDrawing.Imaging.Encoder.Quality
変更します20L
。
画像全体を保存せずにこれを行う方法があるかどうか知りたいです。bitmap を変更する方法bmp1
や、画質を低下させる新しいビットマップを作成する方法はありますか?
byte[] imageBytes = convertImageToByteArray(bmpScreenshot);
MemoryStream mem = new MemoryStream(imageBytes);
using (Bitmap bmp1 = (Bitmap)Image.FromStream(mem))
{
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
ImageCodecInfo jgpEncoder = codecs[1];
System.Drawing.Imaging.Encoder myEncoder =
System.Drawing.Imaging.Encoder.Quality;
myEncoderParameter = new EncoderParameter(myEncoder, 20L);
myEncoderParameters.Param[0] = myEncoderParameter;
bmp1.Save(@"C:\TestPhotoQuality20L.jpg", jgpEncoder, myEncoderParameters);
}