TIFF 图像数据提取与处置
TIFF 图像数据提取与处理
不使用其他库!
因为我试了几个库对16位深的图像都是不支持的,都是强制转换成了8位的。
用过TiffLib、 CXimage。这些都不行。
在研究TIFF格式图像,现在能做到读取数据,分析数据头IFH,分析数据目录IFD,分析目录入口DE。
但是关于DE中的条带状数据不会用,也就是DE的Tag= 273,279的使用不会。不知道该怎么用。
另一个就是图像的数据部分不知道结尾在哪里,开头很明显(我知道位置)。
我现在用的TIFF图像分布是:IFH + 图像数据 +IFD
每个文件中只有一个图像。
1.结尾数据难道是在DE中Tag最小值的前面吗?
2.应该按照条状带来提取吗?条状数据怎么提取和使用?
感谢回答,提供思路,最好有资料
------解决思路----------------------
根据258和277来看,每个pixel是一个word宽的灰度值,也就是说图片中每像素2字节。那么scanline的宽度就是图片宽度*2 = 3020字节。
根据273来看你图片中包含了428个strip,第一个strip开始于0x4EDA4C。根据279来看每个strip包含4个scanline,那么图片总共可以有1712条scanline但是图片高度只有1710,所以最后一个strip只包含2条scanline. 因为你的strip没有压缩,那么你可以直接从0x4EDA4C处开始读,每3020字节一条scanline(1510像素 )*1710条scanline = 5164200字节 约4.9M图片数据
------解决思路----------------------
这样做的好处是控件可以打开的所有图像格式都可以用一个方法来读数据,问题是所有的数据都会读成RGB,可能造成不必要的空间浪费。我还真没遇到到数据不准确的问题,你可以试一下先。如果发现不准确的问题告诉我
------解决思路----------------------
不是0x015E就是0x5E01或调色板中对应的色彩。
不使用其他库!
因为我试了几个库对16位深的图像都是不支持的,都是强制转换成了8位的。
用过TiffLib、 CXimage。这些都不行。
在研究TIFF格式图像,现在能做到读取数据,分析数据头IFH,分析数据目录IFD,分析目录入口DE。
但是关于DE中的条带状数据不会用,也就是DE的Tag= 273,279的使用不会。不知道该怎么用。
另一个就是图像的数据部分不知道结尾在哪里,开头很明显(我知道位置)。
我现在用的TIFF图像分布是:IFH + 图像数据 +IFD
每个文件中只有一个图像。
1.结尾数据难道是在DE中Tag最小值的前面吗?
2.应该按照条状带来提取吗?条状数据怎么提取和使用?
感谢回答,提供思路,最好有资料
------解决思路----------------------
根据258和277来看,每个pixel是一个word宽的灰度值,也就是说图片中每像素2字节。那么scanline的宽度就是图片宽度*2 = 3020字节。
根据273来看你图片中包含了428个strip,第一个strip开始于0x4EDA4C。根据279来看每个strip包含4个scanline,那么图片总共可以有1712条scanline但是图片高度只有1710,所以最后一个strip只包含2条scanline. 因为你的strip没有压缩,那么你可以直接从0x4EDA4C处开始读,每3020字节一条scanline(1510像素 )*1710条scanline = 5164200字节 约4.9M图片数据
------解决思路----------------------
这样做的好处是控件可以打开的所有图像格式都可以用一个方法来读数据,问题是所有的数据都会读成RGB,可能造成不必要的空间浪费。我还真没遇到到数据不准确的问题,你可以试一下先。如果发现不准确的问题告诉我
------解决思路----------------------
不是0x015E就是0x5E01或调色板中对应的色彩。