c# - 如何在c#中压缩位图
问题描述
我有一个截取屏幕截图的代码,我需要压缩它才能发送它。以下代码将位图转换为流并对其进行压缩。我的问题是压缩结果始终是一个充满零的字节数组(在本例中是变量 bb)。
byte[] bb;
Bitmap bmp = this.screenshots.RemoveFromFront();
Stream stream = new MemoryStream();
EncoderParameters encoderParameters = new EncoderParameters(1);
encoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L);
bmp.Save(stream, GetEncoder(ImageFormat.Jpeg), encoderParameters);
using (var compressStream = new MemoryStream())
using (var compressor = new DeflateStream(compressStream, CompressionMode.Compress))
{
stream.CopyTo(compressor);
compressor.Close();
bb = compressStream.ToArray();
}
解决方案
推荐阅读
- c++ - 如何简化 std::variant 类类型
- sql - 为具有两个字段的不同组合的记录选择行 ID
- istio - 如何获得 Istio 策略正在运行的反馈
- ios - SceneView 相机预览作为背景
- sql - Teradata 相当于此 SQL Server DATETIME 代码?
- c# - C# WPF 如何更改代码中的 x:FieldModifier?
- spring - 可选的可空实体 - 弹簧靴
- c - 通过引用传递结构,返回指向新结构的指针
- python - 如何使用 Python 的内置 Logging with Asyncio(权限错误)
- c - 流式 Simd 扩展 (SSE) 的按位运算