控制逐步加载和保存

铅和JPEG(就是)文件格式可以扩展为支持逐步加载和保存图像。逐步加载是用于传输图像,因为文件的第一部分包含完整的图像的尺寸。因此,paint-while-load程序,您可以显示整个图像,然后逐步澄清文件的其他部分负荷。

因为进步的格式更新,一些现有的应用程序不支持他们。因此,特别是当储蓄可能被另一个应用程序读取一个文件,你必须注意通过字段SAVEFILEOPTION结构。

为了避免储蓄累进文件(保存一个普通铅或JPEG文件)使用SAVEFILEOPTION结构设置程数为0在调用函数之前保存该文件。

从技术上讲,只有文件超过三通过先进的文件。它们包括在低分辨率的第一遍全彩色;随后通过提高分辨率。文件包含两个或三个通过断层的文件。他们在第一遍包括灰度信息,在随后的通过或通过和颜色信息。

如果你想保存进步文件或利用该特性当加载一个进步的文件时,您可以控制所需的数量通过完整的图像。有关更多信息,指的是通过字段SAVEFILEOPTION结构。

JBIG还支持逐步加载一个图像。在这个的更多信息,参阅实现JBIG特性

JPEG 2000还支持逐步加载图片。在这个的更多信息,参阅编程与JPEG 2000

注意:就是4:1:1和4:2:2格式使用二次抽样的颜色组件。在411年的情况下,平均4像素的颜色组件是在压缩。这将导致一个颜色转变,但是这种转变是可以忍受低压缩比。如果你有很高的压缩和重复的储蓄,那么颜色转变将会增加。由于JPEG算法的固有局限性,唯一的方法来避免这种情况是:(a)避免重复载荷和重新保存,或(b)使用4:4:4格式,没有二次抽样。

下面的例子显示了如何保存进步领先然后实现累进paint-while-load:

/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *这个示例使用L_LoadFile与一个回调函数来实现进步paint-while-load特性。参考FILEREADCALLBACK函数回调函数如何描绘图像数据。示例代码使用全局声明如下:* /实例句柄hInst;/ *当前应用程序的实例,设置的InitInstance函数* /矩形rClientSize;客户区* / / *矩形矩形rLeadDest;/ *目标矩形画* /矩形rLeadSource;/ *源矩形画* /BITMAPHANDLE LeadBitmap;/ * * /加载位图句柄保存图像FILEINFO FILEINFO;/ *文件信息结构。* // *用于回调函数的用户数据结构* /类型定义结构体tagIMAGECBPARM{HWND HWND;/ *当前窗口* /HDC HDC;/ * * /设备上下文当前窗口}IMAGECBPARM;/ *原型FILEREADCALLBACK函数* /L_INT L_EXPORT EXT_CALLBACK LoadImageCB (pFILEINFO pFILEINFO, pBITMAPHANDLE pBitmap,L_UCHAR * pbuf,L_UINT uFlags, L_INT nRow, L_INT在线,IMAGECBPARM * pUserData);/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /无效试验载荷(L_TCHAR * pszFilename HWND HWND){静态IMAGECBPARM用户数据;/ *用于回调函数的用户数据结构* /LOADFILEOPTION LOADFILEOPTION;/ * * /结构进步的选项SAVEFILEOPTION SAVEFILEOPTION;/ * * /结构进步的选项FILEREADCALLBACK lpfnCallBack;/ *加载位图* /L_LoadBitmap (pszFilename &LeadBitmap,运算符(BITMAPHANDLE), 0 ORDER_BGR零);/ *获取当前EXTFILEOPTION价值观和保存当前值* /L_GetDefaultLoadFileOption (&LoadFileOption运算符(LOADFILEOPTION));L_GetDefaultSaveFileOption (&SaveFileOption运算符(SAVEFILEOPTION));/ *设置的数量通过累进引导文件* /SaveFileOption。通过= 8;/ *保存文件* /L_SaveBitmap(文本(“C: \ \ \ \ TEST.CMP LEADTOOLS21 \ \图片”24岁的)、&LeadBitmap FILE_CMP PQ2, &SaveFileOption);/ *设置回调的数量通过加载进步引导文件* /LoadFileOption。通过= CALLBACK_WHEN_MEANINGFUL;/ *得到窗口的客户区。我们假设在程序的其他地方,L_FileInfo函数被用来更新FileInfo结构,窗口尺寸被调整位图的长宽比。* /GetClientRect (hWnd, &rClientSize);/ *使目标矩形绘画一样的客户区* /rLeadDest = rClientSize;/ *初始化位图处理* /L_InitBitmap (&LeadBitmap运算符(BITMAPHANDLE) FileInfo。宽度,FileInfo。高度,FileInfo。BitsPerPixel);LeadBitmap。ViewPerspective = FileInfo.ViewPerspective;/ *设置用户数据用于L_LoadFile中的回调函数* /用户数据。hwnd = hwnd;/ *当前窗口* /用户数据。hdc = GetDC (hWnd);/ * * /设备上下文当前窗口/ *设置回调函数L_LoadFile功能。* /lpfnCallBack = (FILEREADCALLBACK) MakeProcInstance ((FARPROC) LoadImageCB hInst);/ *加载文件时,调用lpfnCallBack油漆位图。* /L_LoadFile(文本(“C: \ \ LEADTOOLS21 \ \ TEST.CMP”),&LeadBitmap,运算符(BITMAPHANDLE),0,ORDER_BGR,LOADFILE_ALLOCATE | LOADFILE_STORE,lpfnCallBack,用户数据,&LoadFileOption);FreeProcInstance ((FARPROC) lpfnCallBack);/ *避免不必要的重画* /ValidateRect (hWnd, &rLeadDest);返回;}

LEADTOOLS光栅成像C API的帮助