我正在尝试通过网络发送位图截图,因此我需要在发送之前对其进行压缩。有这样的库或方法吗?
答案 0 :(得分:3)
将图像保存到流时, 选择格式。几乎所有位图格式(bmp,gif,jpg,png)都使用一种或多种形式的压缩。因此,只需选择适当的格式,并确保发件人和收件人就此达成一致。
答案 1 :(得分:1)
答案 2 :(得分:1)
如果您正在寻找能够压缩图像质量的东西,请点击这里 -
private Image GetCompressedBitmap(Bitmap bmp, long quality)
{
using (var mss = new MemoryStream())
{
EncoderParameter qualityParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
ImageCodecInfo imageCodec = ImageCodecInfo.GetImageEncoders().FirstOrDefault(o => o.FormatID == ImageFormat.Jpeg.Guid);
EncoderParameters parameters = new EncoderParameters(1);
parameters.Param[0] = qualityParam;
bmp.Save(mss, imageCodec, parameters);
return Image.FromStream(mss);
}
}
使用它 -
var compressedBmp = GetCompressedBitmap(myBmp, 60L);
答案 3 :(得分:0)
may be can use
private Bitmap compressImage(Bitmap image) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
image.compress(Bitmap.CompressFormat.JPEG, 100, baos);//
int options = 100;
while ( baos.toByteArray().length / 1024>100) { //
baos.reset();
image.compress(Bitmap.CompressFormat.JPEG, options, baos);//
options -= 10;// 10
}
ByteArrayInputStream isBm = new ByteArrayInputStream(baos.toByteArray());//
Bitmap bitmap = BitmapFactory.decodeStream(isBm, null, null);//
return bitmap;
}