如何在C#中将自定义数据保存为有效的jpeg图像

时间:2011-02-02 15:41:54

标签: c# jpeg

我需要在只接受jpeg图像的服务器上存储XML数据。我想过在有效的jpeg文件中编写我的XML数据。毕竟,除了jpeg标题之外,图像文件的内容是任意数据吗?

是否可以生成有效的jpeg文件,但是其“body”是否填充了自定义字节?

当然,我还需要能够解码自定义jpeg文件并恢复数据。

我不熟悉jpeg文件格式,所以我很欣赏一个明确的例子。

4 个答案:

答案 0 :(得分:3)

或许只是将数据附加到一个小的jpeg会起作用吗?

  • 创建一个小jpeg。
  • 将您的(混淆/加密)XML附加到文件中。
  • 上传到服务器。

FWIW,您可以使用Hex编辑器轻松查看此内容。只需创建一个小jpeg并将xml追加到最后。然后使用任何图像编辑器打开它。

对于jpeg文件,这是完全有效的事情:

Will random data appended to a JPG make it unusable?

答案 1 :(得分:2)

嗯,这是一个奇怪的架构...但无论如何我认为这篇文章会很有用: How to Add 'Comments' to a JPEG File Using C# 所以提案是将数据添加为jpeg空白图像的元数据。

答案 2 :(得分:0)

如果要将数据添加为实际的jpeg数据,首先要创建一个带有BitmapSource.Create的BitmapSource,并将数据放入buffer参数中。比使用JpegBitmapEncoder将其保存为jpeg文件(例如here)。

但是,据我所知,.Net jpeg编码器不是无损的(即使你将它的质量设置为100%),所以你需要一个可以编码JPEG无损的第三方库。

答案 3 :(得分:0)

我不知道JPEG特定的方式,但有一个PNG / GIF方法来编码任意数据和像素。看看这篇文章。有些网站允许您上传重命名为JPEG的PNG和GIF,以便您可以尝试。 http://blog.nihilogic.dk/2008/05/compression-using-canvas-and-png.html

他正在保存javascript,但你可以使用和发短信。