3

首先,这个问题不是关于“如何将位图保存为磁盘上的 jpeg?”

我找不到(或想到)一种Bitmap使用 Jpeg 压缩转换 a 的方法,但将其保留为Bitmap对象。MSDN 清楚地展示了如何将位图保存为 JPEG,但我正在寻找的是如何将编码/压缩应用于Bitmap对象,因此我仍然可以在我的代码中传递它,而无需引用文件。

其背后的原因之一是处理位图的辅助类,但不应该知道使用的持久性方法。

4

3 回答 3

5

所有图像在加载到程序存储器时都是位图。写入磁盘时通常使用特定的压缩,从磁盘读取时通常使用解压缩。

如果您担心图像的内存占用,您可以压缩字节并在内部传递字节数组。压缩将有利于图像的无损压缩。不要忘记许多图像压缩具有不同级别的丢失(sp?) 换句话说,压缩丢弃数据以将图像存储在尽可能少的字节数中。

解/压缩也是一种性能权衡,因为您正在用内存占用来换取处理时间。在任何情况下,除非您真的很喜欢,否则如果您需要以任何方式对其进行操作,图像确实需要是位图。

这是一个您可能会觉得有趣的类似问题的答案。

于 2012-09-11T17:30:55.833 回答
3

Bitmap不支持编码的内存存储。它始终是未编码的(参见PixelFormat枚举)。可能您需要编写自己的包装类/抽象,或者放弃这个想法。

于 2012-09-11T17:31:28.437 回答
1
var stream = new MemoryStream()
Bitmap.Save(Stream, ImageFormat)

它是你需要的吗?

于 2012-09-11T17:32:49.530 回答