我试图以尽可能最快的方式以编程方式降低图像质量。现在,我可以从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);
}