在c#中增加图像的位深度

本文关键字:深度 图像 增加 | 更新日期: 2023-09-27 18:10:03

是否有任何可能的方法来增加图像的位深,并将该图像的额外信息保存到增加的位中,而不影响原始像素值?

  • 即:原始图像= 24位RGB
  • 所需:32位(额外8位到存储一些其他信息)

在c#中增加图像的位深度

你可以尝试使用alpha通道

  • 转换为RGBA
  • 但不同的文件格式处理方式不同
  • 所以它可以在预览
  • 时改变视觉外观
  • 尝试: TGA, PNG, BMP
  • 格式,如:JPG,PCX,…不支持alpha通道
  • 还有一些格式/查看器可以选择背景颜色,这也改变了外观
  • 你可以部分地使用较低的alpha位计数来避免过多的噪点预览
  • 例如00XXh,80XXh or FFXXh取决于混合函数
  • 但是如果你真的需要每像素8位,那么在你使用的查看器中使用忽略Alpha通道的格式

您可以在图像

后面添加新的信息
  • 一些格式,如GIF使用文件结束标记
  • 所以你可以在标记后添加你的数据…
  • 但是你需要自己处理图片加载/保存
  • 一些格式在头信息中使用偏移表或图像数据的起始地址
  • 你可以把你的数据放在里面,甚至在图像数据
  • 并相应地偏移起始地址
  • 也为您需要处理加载/保存自己
  • 这种方式的展位将不会在预览中显示额外的信息
  • 但是查看器和防病毒应用程序可以检测到错误的大小
  • 和写得不好的加载器甚至会崩溃…

您可以将信息放入图像的辅助数据/通道

  • 格式,如GIF有额外的数据块用于字幕,动画命令,同步和更多
  • 你可以把你的数据编码到里面
  • 这种方式是干净的,但没有多少文件格式能够这样
  • 这些文件的高级工具可以看到添加的信息,但你需要寻找它…