首页 文章

如何将位图图像转换为CIELab图像?

提问于
浏览
1

你好stackoverflow成员!这是我的第一篇文章,但我喜欢在这个论坛上阅读问题和答案!我正在使用VS2008,CSharp,NET 3.5和Windows XP Pro这个项目的最新补丁 . 我正在使用CSharp以下列方式在jpeg文件中读取位图图像:位图bmp = new Bitmap(“background.jpg”);
图形g = Graphics.FromImage(bmp);
然后我使用各种DrawString和DrawImage命令在g上写一些文本和徽标 . 然后,我想使用以下命令将此位图写入tiff文件:bmp.Save(“final_artwork.tif”,ImageFormat.Tiff);
我不知道当你执行bmp.Save时,最终结果TIFF文件的 Headers 中的TIFF标记是什么?如上所示?但我想 生产环境 与光度的CIELab,BITSPERSAMPLE 8,SAMPLESPERPIXEL 3,FILLORDER MSB2LSB,定向左上,PLANARCONFIG CONTIG TIFF图像文件,并且也未压缩和singlestrip . 我相当肯定,至少我还没有找到任何关于Microsoft API和CIELab的信息,我无法将位图图像转换为CIELab光度计以及使用Microsoft API或.NET 3.5环境中的任何其他要求 - 如果我错了,有人请更正 . 我过去在一个项目中使用了libtiff,但只是写了一个tiff文件,其中内存中的tiff图像已经是CIELab格式,以及上面提到的所有其他要求 . 我不确定libtiff能否将我的CSharp位图图像(可能是RGB光度计)转换为CIELab,8 bps和3 spp?也许我可以使用OpenCVImage或Emgu CV或类似的东西?因此,主要问题是如何将上面列出的最终位图图像放入CIELab TIFF以及满足上述其他要求的最简单方法是什么?感谢您提供的任何建议和代码片段?尼尔戴维斯

2 回答

  • 0

    尝试使用imagemagick库,我确定它有一个很好的C#包装器,它支持人类已知的几乎所有图像文件格式!

  • 1

    我想提一下我的爱好项目库:Colourful

    它支持从RGB到CIELab的转换 . 您可以设置许多选项,例如白点和RGB工作空间 . 它也会进行色彩适应,因此产生的颜色应该是获得的最佳结果 .

    但是你必须逐个像素地转换图像,例如使用LockBits方法,这比 SetPixelGetPixel 快 .

相关问题