【发布时间】:2013-08-09 10:51:31
【问题描述】:
我正在使用 C# 进行一些图像处理,需要帮助了解不同图像格式的原始数据之间的差异。
我正在从相机捕获一个 640x480、30 帧的第二个 RGB 流,我想将其写入磁盘,因为每个帧同时显示并显示在 WPF 画布对象上。
使用 Binary Writer 我可以轻松地将图像的 byte[] 数据写入磁盘,并且可以轻松地将其转换为可写位图以显示在画布上。
我不明白的是这个。 JPEG 的原始数据 (byte[] imageData) 是否与位图的原始数据不同(尺寸更小)?如果是,将每个 RGB 图像转换为 JPEG,然后获取该 JPEG 的字节数组,然后将该信息写入磁盘是否更有意义?
抱歉,如果这听起来我对此有一个简单的看法,但我对这种类型的编程相对了解。提前感谢您的帮助。
【问题讨论】:
-
Jpeg 被压缩,位图没有。我错过了什么吗?
-
Jpeg 99% 的时间都是有损压缩的,位图不是...
-
这意味着 JPeg 在制作时会丢弃一些(甚至很多)数据。
-
原始数据与 jpeg 数据不同,就像 Sayse 所说,它是经过压缩的。但是压缩/解压缩原始数据会消耗 cpu 功率,而 jpeg 格式是有损格式,因此会丢失质量。我认为,您应该考虑磁盘大小与记录帧并将其压缩为 jpeg 的 cpu 功率是否重要。
-
对于“从相机捕获 640x480,每秒 30 帧的 RGB 流”,听起来 JPEG 比原始 RGB 像素更好。 JPEG 肯定会为您节省一些字节。但这取决于您是否可以忍受稍微降低的质量。
标签: c# image type-conversion bytearray jpeg