大型JPEG/PNG图像序列循环

Gol*_*Lee 5 c++ loops image

我一直在研究关于遥感图像处理和图像序列循环的项目.每个生成的图像(JPEG或PNG格式)大约有8000*4000像素.我们的用户通常希望一次基于感兴趣的区域循环图像序列(超过50个图像).因此,我必须根据用户的可视化客户端大小从每个图像中提取所需的查看区域.例如,如果用户当前的客户端视图是640*480,我将必须根据当前的x(列)和y(行)坐标从每个原始图像中找到640*480数据块的大小,并重新映射到客户端视图.当用户通过鼠标拖动平移到另一个查看区域时,我们的程序必须尽快从每个原始图像中重新加载区域数据.

我知道JPEG库和PNG库都没有一些内置的数据块读取例程,例如长的ReadRectangle(长x0,长y0,长x1,长y1,char*RectData); long ReadInaRectangle(long x0,long y0,short width,short height,char*RectData);

内置的JPEG解压缩器缺乏这种功能.我知道JPEG2000格式有解压缩图像特定区域的规定.我对JEPG并不完全确定.

有人建议我使用CreateFileMapping,MapViewOfFile和CreateDIBSection来提交映射到视图的文件映射的字节数.与简单的平面二进制图像格式(如*.raw,*.img和*.bmp)不同,JPEG的Blob不仅包含图像数据,还包含复杂的JPG标题.因此,从JPEG文件中映射数据视图块并不容易.

有人建议我使用图像平铺或图像金字塔技术来生成子图像,就像流行的,图像可视化(谷歌地球等)和GIS应用程序(WebGIS等)一样.

我怎么解决这个问题?

谢谢你的帮助.

金李

xcr*_*mps 0

使用gd 库很容易。LibGD 是一个开源代码库,供程序员动态动态创建图像。