将Tif索引的8位颜色转换为32位颜色

将Tif索引的8位颜色转换为32位颜色,第1张

概述将Tif索引的8位颜色转换为32位颜色

我有一个索引的Tiff图像,我正在阅读使用libtiff.net生成大图像的一部分的位图图像。 我相信Tiff将有256个颜色条目,我想要转换为256位的32位像素值用于输出位图。

int bitsPerSample = tif.GetFIEld(TiffTag.BITSPERSAMPLE)[0].ToInt(); FIEldValue[] colourIndex = tif.GetFIEld(TiffTag.colorMAP); int[] palette = new int[256]; for( int i = 0; i < 256; i++ ) { short red = colourIndex[0].ToShortArray()[i]; short green = colourIndex[1].ToShortArray()[i]; short blue = colourIndex[2].ToShortArray()[i]; palette[i] = ? }

如何将RGB短路转换为32位像素值?

注册热键

我怎样才能让一个ListVIEw的列自动resize编程?

为什么微软不像C ++那样提供像windows.h这样的最原生的函数和结构的静态Win32类?

Process.GetCurrentProcess()。MainWindowHandle返回零

无法卸载MysqL连接器。净6.9.3,在MysqL.Web.v20.dll失败

尝试System.Drawing.color.FromArgb(red,green,blue).ToArgb() 。

但是,如果libTiff和Win32都为它们的ARGB值使用相同的字节排序,这只会给出正确的结果。 它也假定你的红色,绿色和蓝色的值在0到255的范围内; 如果没有,你可以缩放它们。

在TIFF colorMap中,每种颜色的值数是2 ** BitsPerSample。 因此,8位调色板彩色图像的colorMap字段将有3 * 256个值。

每个值的宽度是16位。 0代表最小强度,65535代表最大强度。 黑色代表0,0,白色代表65535,65535,65535。

所以,你可能应该使用下面的代码:

ushort red = colourIndex[0].ToShortArray()[i]; ushort green = colourIndex[1].ToShortArray()[i]; ushort blue = colourIndex[2].ToShortArray()[i]; palette[i] = System.Drawing.color.FromArgb(red / 255,green / 255,blue / 255).ToArgb();

总结

以上是内存溢出为你收集整理的将Tif索引的8位颜色转换为32位颜色全部内容,希望文章能够帮你解决将Tif索引的8位颜色转换为32位颜色所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1275988.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-09
下一篇2022-06-09

发表评论

登录后才能评论

评论列表(0条)

    保存