L_StartFeedLoad

# include“l_bitmap.h”

L_LTFIL_APIL_INTL_StartFeedLoad (pBitmap uStructSize nBitsPerPixel,北方,uFlags, pfnCallback, pUserData, phLoad, pLoadOptions, pFileInfo)

初始化一个装载文件过程中你控制输入流。你必须调用L_FeedLoad函数来提供缓冲数据,您必须调用L_StopFeedLoad当加载完成。

参数

pBITMAPHANDLEpBitmap

位图句柄指针来加载图像。

L_UINTuStructSize

结构大小的字节,指向pBitmap版本控制。使用sizeof (BITMAPHANDLE)。

L_INTnBitsPerPixel

像素的深度产生的位图。以下是有效值:

价值 意义
0 保留原始文件的像素深度(不要转换)。有关更多信息,请参见特别注意装载12——16位灰度图像
1到8 指定比特每像素的位图
12 12位/像素的位图。
16 16位/像素的位图
24 每像素24位位图
32 32位/像素的位图

L_INT北方

订单所需的颜色。可能的值是:

价值 意义
ORDER_RGB [0]红-绿-蓝秩序。
ORDER_BGR [1]Blue-green-red秩序。
ORDER_GRAY [2]12或16位灰度图像。12 - 16位灰度图像中只支持文档和医疗成像工具包。
0 数据是8位/像素或更少。
ORDER_RGBORGRAY [3]加载形象红、绿、蓝或12或16位灰度图像。12 - 16位灰度图像的支持文档和医疗成像工具包。
ORDER_BGRORGRAY [4]加载形象蓝色、绿色、红色或12或16位灰度图像。12 - 16位灰度图像的支持文档和医疗成像工具包。

L_UINTuFlags

二进制信号,确定的行为L_FeedLoad。您可以指定一个或多个下列值:

价值 意义
LOADFILE_ALLOCATE 指定位图[0 x0001]分配内存。
LOADFILE_STORE [0 x0002]数据加载到指定的位图。(这发生在你的回调函数的行为。)
LOADFILE_FIXEDPALETTE [0 x0004]力托盘化图像犹豫到一个固定的调色板。
LOADFILE_NOINTERLACE [0 x0008]通过图像数据的顺序显示,不管它是如何存储在文件中。(如果您的程序设置这个标志不处理隔行文件格式)。
LOADFILE_ALLPAGES [0 x0010]加载所有页面的多页文件。使用这个标志只有当你创建一个位图使用列表L_AppendPlayback函数。
LOADFILE_COMPRESSED [0 x0040] (文档和医疗成像工具包)如果可能,加载文件作为比特RLE-compressed形象。有关更多信息,请参考加速1比特文件
LOADFILE_CALLINANYTHREAD 0 x00004000]如果设置了这个标志,LEADTOOLS将调用[FILEREADCALLBACK函数从其他线程线程称为L_StartFeedLoad。这将导致更好的性能。

这是最好的如果你不使用FILEREADCALLBACK函数,或者如果你从一个工作线程调用FILEREADCALLBACK函数。

FILEREADCALLBACKpfnCallback

可选的回调函数进行额外的处理。

如果你不提供一个回调函数,使用NULL作为该参数的值。

如果你提供一个回调函数,使用函数指针作为该参数的值。

回调函数必须遵守所描述的函数原型FILEREADCALLBACK函数

L_VOID* pUserData

空指针,允许通过一个或多个回调函数需要额外的参数。

要使用该功能,赋值给一个变量或创建一个结构,其中包含许多字段。然后在这个参数,通过变量的地址或结构,铸件L_VOID*。回调函数,接收地址的pUserData参数,可以把它适当的数据类型的指针来访问变量或结构。

如果不需要额外的参数,这个参数传递NULL。

L_HGLOBAL* phLoad

处理标识加载过程。使用这个处理L_FeedLoadL_StopFeedLoad功能。

pLOADFILEOPTIONpLoadOptions

指针可选的扩展加载选项。通过零使用默认加载选项。

pFILEINFOpFileInfo

指针指向一个FILEINFO结构。这种结构可以包含文件信息用于加载一个图像,也可以更新信息文件被加载。

如果不知道该文件,该参数传递NULL;FILEINFO类型的或声明一个变量并设置FILEINFO。国旗为0,然后通过FILEINFO结构这个参数的地址。在这种情况下,如果FILEINFO结构传递的地址,FILEINFO结构将被更新的结果L_FileInfo

如果文件类型,设置pFileInfo。格式的文件类型并设置pFileInfo。FILEINFO_FORMATVALID旗帜。这样做也可以,如果L_FileInfo被称为以前,但价值观影响图像加载的大小已经改变了(例如,通过调用L_SetPCDResolution或L_SetWMFResolution)。在这种情况下,指着FILEINFO结构pFileInfo L_FileInfo的结果将被更新。

如果L_FileInfo被称为调用这个函数之前,并没有改变的内容结构由L_FileInfo,然后填写的地址FILEINFO结构为这个参数可以传递。在这种情况下,FILEINFO。旗帜应该设置为FILEINFO_INFOVALID成员。将FILEINFO L_FileInfo函数。FILEINFO_INFOVALID旗帜。在这种情况下,负载将更快因为这个函数没有查询文件类型的文件过滤器。

请注意:局部变量没有初始化(因为它们放在堆栈)。如果你有一个FILEINFO结构作为一个局部变量,其标志参数的值是未定义的,可能有FILEINFO_INFOVALID或FILEINFO_FORMATVALID集。这就是为什么重要的是初始化FILEINFO。旗帜之前FILEINFO结构函数的地址。

返回

价值 意义
成功 函数是成功的。
< 1 一个错误发生。指返回代码

评论

这个装载文件过程非常有用当收到传输图像,如那些在互联网上。它的工作原理一样L_LoadFile功能,除了代码提供图像数据。装载文件的过程如下:

  1. 调用L_StartFeedLoad函数初始化装载文件处理过程和识别过程phLoad

  2. 创建一个缓冲区,和每次填充信息,调用L_FeedLoad函数,该函数将数据发送到装载文件过程就像如果数据被读取磁盘上的文件。

  3. 只要有足够的数据,装载文件过程表现在L_LoadFile函数相同。它分配并开始加载位图,根据您指定的旗帜L_StartFeedLoad函数。它调用回调函数,如果一个人被指定,只要它有足够的数据输入缓冲区。

    装载文件过程不更新信息的位图处理,直到得到了足够的信息。(通常,信息,如位图的高度和宽度,在文件头。)装载文件的过程会让你第一次调用回调函数时这些信息是可用的。

  4. 结束装载文件过程中,调用L_StopFeedLoad函数,该清除的过程。如果你调用这个函数之前提供完整的文件,它将成功清理过程,但将返回一个文件读取错误。你应该陷阱如果负载是取消了故意的错误。

ORDER_GRAY只适用于12 - 16位灰度图像。支持12和16位灰度图像仅仅是可用的文档和医疗成像工具包。

这个函数不能结合使用L_RedirectIO

请注意:你不应该通过未初始化FILEINFO这个函数。

必需的dll和库

平台

Win32 x64, Linux。

另请参阅

功能

主题

例子

为完整的示例代码,参考FEEDLOAD例子。
这个例子演示了使用Windows的feed-load特性
GetTickCount函数来模拟接收传输图像。
这个示例还使用一个回调函数来实现paint-while-load特性。指的是FILEREADCALLBACK
函数回调函数如何描绘图像数据。

/ *用于回调函数的用户数据结构* /类型定义结构体tagIMAGECBPARM{HWND HWND;/ *当前窗口* /HDC HDC;/ * * /设备上下文当前窗口}IMAGECBPARM;静态L_INT EXT_CALLBACK LoadImageCB (pFILEINFO pFILEINFO,pBITMAPHANDLE pBitmap,L_UCHAR * pbuf,L_UINT uFlags,L_INT nRow,L_INT在线,L_VOID * pUserData){静态矩形rLeadSource;静态矩形rLeadDest;pUserData IMAGECBPARM * pData = (IMAGECBPARM *);/ *如果这是第一次调用(行0),选择并实现调色板* /如果((uFlags & FILEREAD_FIRSTPASS) & & (uFlags & FILEREAD_FIRSTROW)){/ *设置源矩形使用整个位图* /SetRect (&rLeadSource 0 0, pFileInfo - >宽度,pFileInfo - >高度);/ *设置服务台矩形使用整个客户区* /GetClientRect (pData - > hwnd, &rLeadDest);}油漆/ * * /缓冲到指定的设备上下文L_PaintDCBuffer (pData - > hdc,/ * * /设备上下文——从函数参数pBitmap,/ * * /位图处理——从函数参数&rLeadSource,/ *源矩形-设置在全球WM_CREATE * /&rLeadSource,/ *源剪辑矩形一样——源矩形* /&rLeadDest,/ *目标矩形,集全球WM_CREATE * /&rLeadDest,/ *目的地剪辑矩形一样——目标矩形* /SRCCOPY,为正常的绘画* / / *罗普代码pbuf,/ *输入缓冲区——从函数参数* /nRow,/ *第一行缓冲——从函数参数* /(uFlags & FILEREAD_COMPRESSED) ?-nLines:在线);返回(成功);}L_INT StartFeedLoadExample (HWND HWND, pBITMAPHANDLE pBitmap){L_INT nRet;处理高频;/ *文件句柄* /HGLOBAL hLoad;/ *处理标识加载过程* /L_UCHAR cBuf [1024];/ *为接收数据缓冲区* /L_INT nRead;/ *读取的数据量的一个通过阅读循环* /L_UINT32 dwBaseTime;/ *的价值第一次调用GetTickCount * /L_UINT32 dwReceiveTotal;/ *从模拟到目前为止收到的数据传输* /L_UINT32 dwReceiveRead;/ *数据实际上到目前为止* /处理静态IMAGECBPARM用户数据;/ *用于回调函数的用户数据结构* // *初始化变量用于模拟传入传播* /dwBaseTime = GetTickCount ();dwReceiveTotal = 0;dwReceiveRead = 0;/ *读取打开文件* /高频=它仅仅(MAKE_IMAGE_PATH(文本(“ImageProcessingDemo \ \ Image3.cmp”)),GENERIC_READ FILE_SHARE_READ, NULL, OPEN_EXISTING 0零);/ *设置用户数据用于L_StartFeedLoad中的回调函数* /用户数据。hwnd = hwnd;/ *当前窗口* /用户数据。hdc = GetDC (hWnd);/ * * /设备上下文当前窗口/ *初始化* /装载文件的过程如果(pBitmap - > Flags.Allocated)L_FreeBitmap (pBitmap);nRet = L_StartFeedLoad (pBitmap,运算符(BITMAPHANDLE), 0 ORDER_BGRLOADFILE_ALLOCATE | LOADFILE_STORE,用户数据,LoadImageCB &hLoad,空,空);如果(nRet ! =成功)返回nRet;/ *使用Windows GetTickCount函数来模拟接收传输图片* /(;,){/ *计算接收到的数据到目前为止,使用一个模拟的波特率为28800 * /dwReceiveTotal = ((GetTickCount () - dwBaseTime) * (28800/100) / 100);/ *初始化的数据量在这看书通过* /nRead = (L_INT) min (dwReceiveTotal——dwReceiveRead (L_UINT32)运算符(cBuf));/ *如果没有收到数据通过* /如果(nRead = = 0)继续;/ *试图预期数量的数据从文件读入cBuf * /DWORD BytesRead;ReadFile (hf、cBuf nRead &BytesRead, NULL);/ *我们完成如果没有读* /如果(BytesRead !)打破;/ *提供图像数据从cBuf装载文件过程* /L_FeedLoad (hLoad cBuf BytesRead);/ *更新实际处理的数据量* /dwReceiveRead + = (L_UINT32) BytesRead;}/ *关闭文件和清理装载文件过程* /CloseHandle(高频);L_StopFeedLoad (hLoad);返回成功;}

LEADTOOLS光栅成像C API的帮助
188金宝搏的网址客服|支持|联系我们|知识产权的通知
©1991 - 2021领先的技术公司。保留所有权利。