将位图编码为Jpeg

时间:2012-09-11 17:25:17

标签: c# encoding bitmap jpeg

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

我无法找到(或想到)使用Jpeg压缩转换Bitmap的方法,但将其保留为Bitmap对象。 MSDN clearly shows如何将Bitmap保存为JPEG,但我正在寻找的是如何将编码/压缩应用于Bitmap对象,所以我仍然可以在我的代码中传递它,没有引用文件。

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

3 个答案:

答案 0 :(得分:5)

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

如果您担心图像的内存占用,可以压缩字节并在内部传递字节数组。压缩对于图像的无损压缩是有益的。不要忘记许多图像压缩都有different levels of losiness(sp?)换句话说,压缩会丢弃数据以尽可能少的字节存储图像。

De / compression也是一种性能权衡,因为您在处理内存时占用了处理时间。在任何情况下,除非你真的很喜欢,否则如果你需要以任何方式操作它,图像确实需要是一个位图。

以下是您可能感兴趣的an answer for a somewhat similar question

答案 1 :(得分:3)

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

答案 2 :(得分:1)

var stream = new MemoryStream()
Bitmap.Save(Stream, ImageFormat)

这是你需要的吗?