我試圖以儘可能最快的方式以編程方式降低圖像質量。現在,我可以從byte[]
中讀取圖像,然後將其作爲MemoryStream
讀取到Bitmap
,並通過Drawing.Imaging.Encoder.Quality
在保存到所需的20L
時更改其質量。在不保存的情況下降低JPEG圖像質量
我想知道是否有辦法做到這一點,而不保存整個圖像。有沒有辦法改變位圖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);
}