L_LoadMemory

# include“l_bitmap.h”

L_LTFIL_APIL_INTL_LoadMemory(pBuffer, pBitmap, uStructSize, nBitsPerPixel, nOrder, uFlags, pfnCallback, pUserData, nBufferSize, pLoadOptions, pFileInfo)

使用回调函数从内存加载任何受支持的文件。

参数

L_UCHAR* pbuf

指向内存中要加载的文件的指针。

pBITMAPHANDLEpBitmap

指向位图句柄的指针,该句柄引用要用图像数据填充的位图。

L_UINTuStructSize

所指向结构的大小(以字节为单位)pBitmap,用于版本控制。使用sizeof (BITMAPHANDLE)。

L_INTnBitsPerPixel

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

价值 意义
0 保持原始文件的像素深度(不进行转换)。关于加载12位和16位灰度图像的特别注意事项
1 ~ 8 合成位图中每个像素的指定位
12 在合成位图中,每像素12位
16 在合成位图中,每像素16位
24 合成位图中每像素24位
32 在合成位图中每像素32位
48 合成位图中每像素48位
64 在合成位图中每像素64位

L_INT北方

理想的颜色顺序。可能取值为:

价值 意义
ORDER_RGB 红绿蓝顺序。
ORDER_BGR 蓝绿红顺序。
ORDER_GRAY [2] 12位或16位灰度图像。12位和16位灰度图像仅支持文件和医疗成像工具包。
0 数据为每像素8位或更少。
ORDER_RGBORGRAY 将图像加载为红色、绿色、蓝色或12位或16位灰度图像。支持12位和16位灰度图像文件和医疗成像工具包。
ORDER_BGRORGRAY 将图像加载为蓝色、绿色、红色或12位或16位灰度图像。支持12位和16位灰度图像文件和医疗成像工具包。
ORDER_ROMM [5] rom顺序。ROMM仅支持24位和48位映像。
ORDER_BGRORGRAYORROMM 加载图像为红色,绿色,蓝色或作为12或16位灰度图像或作为rom。支持12位和16位灰度图像文件和医疗成像工具包。ROMM仅支持24位和48位彩色图像。

L_UINTuFlags

决定L_LoadMemory行为的二进制标志。您可以指定以下一个或多个值:

价值 意义
LOADFILE_ALLOCATE [0x0001]函数为指定的位图分配内存。
LOADFILE_STORE [0x0002]函数将数据加载到指定的位图中。(这发生在回调函数的动作之外。)
LOADFILE_FIXEDPALETTE [0x0004]该标志将强制将一个托盘化的图像抖动到固定的调色板。
LOADFILE_NOINTERLACE [0x0008]该函数以显示的顺序传递图像数据,而不管它是如何存储在文件中的。(如果您的程序不处理交错文件格式,请设置此标志。)
LOADFILE_ALLPAGES [0x0010]该函数加载多页文件的所有页。属性创建位图列表时,才使用此标志L_AppendPlayback函数。
LOADFILE_NOINITBITMAP [0x0020]函数在加载文件时不初始化位图句柄。类中提供所有必需信息时才使用此标志BITMAPHANDLE结构。
LOADFILE_COMPRESSED [0 x0040] (文件和医疗如果可能的话,将文件加载为1位rle压缩图像。有关更多信息,请参阅加速1位文档
LOADFILE_MULTITHREADED [0x2000]使用多线程加载

FILEREADCALLBACKpfnCallback

用于额外处理的可选回调函数。

如果不提供回调函数,则该参数的值为NULL。

如果提供回调函数,则使用函数指针作为此参数的值。

回调函数必须遵循中描述的函数原型FILEREADCALLBACK函数

L_VOID* pUserData

可用于传递回调函数所需的一个或多个附加参数的空指针。

要使用此特性,请为变量赋值或创建包含所需字段的结构。然后,在这个参数中,传递变量或结构的地址,将其强制转换为L_VOID*。回调函数在自己的pUserData形参中接收地址,可以将其转换为适当数据类型的指针以访问变量或结构。

如果不需要附加参数,则可以在此参数中传递NULL。

L_SSIZE_TnBufferSize

文件在内存中的大小(字节)。

pLOADFILEOPTIONpLoadOptions

指向可选扩展加载选项的指针。传递NULL以使用默认的加载选项。

pFILEINFOpFileInfo

指向FILEINFO结构的指针。该结构可以包含加载图像时使用的文件信息,也可以使用有关正在加载的文件的信息进行更新。

如果对文件一无所知,则为该参数传递NULL,或者声明一个FILEINFO类型的变量并设置FILEINFO。标记为0,然后在此参数中传递FILEINFO结构的地址。在这种情况下,如果传递了FILEINFO结构的地址,则FILEINFO结构将使用L_FileInfo的结果进行更新。

如果只知道文件类型,则设置pFileInfo。Format为文件类型,设置pFileInfo。指向FILEINFO_FORMATVALID的标志。如果之前已经调用了L_FileInfo,但是影响加载图像大小的值已经改变(例如,通过调用L_SetPCDResolution或L_SetWMFResolution),也可以这样做。在这种情况下,pFileInfo指向的FILEINFO结构将被L_FileInfo的结果更新。

有些文件格式不包含定义良好的文件签名。对于文档文件格式(TXT、PST等)尤其如此。LEADTOOLS仍然可以使用文件名扩展名(例如。“pst”)。但是,当从内存加载文件时,文件名扩展名不可用。要为该函数提供一个文件扩展名,请设置pFileInfo。将映像文件的名称加上扩展名和pFileInfo。从内存加载时指向FILEINFO_NAMEVALID的标志。

如果在调用此函数之前调用了L_FileInfo,并且没有对L_FileInfo填充的结构的内容进行任何更改,则可以将填充的FILEINFO结构的地址传递给该参数。在本例中,FILEINFO。Flags成员应该设置为FILEINFO_INFOVALID。L_FileInfo函数将设置FILEINFO。指向FILEINFO_INFOVALID的标志。在这种情况下,加载会更快,因为这个函数不需要查询文件类型的文件过滤器。

请注意:局部变量没有初始化(因为它们被放置在堆栈上)。因此,如果你有一个FILEINFO结构作为一个局部变量,它的Flags参数的值是未定义的,可能设置了FILEINFO_INFOVALID或FILEINFO_FORMATVALID。这就是初始化FILEINFO很重要的原因。在将FILEINFO结构的地址传递给函数之前。

返回

价值 意义
成功 活动很成功。
< 1 发生错误。指返回代码

评论

仅支持12位和16位灰度图像文件和医疗成像工具包。

回调函数可以将图像显示到屏幕上、写入文件或执行其他有用的操作。

这个函数将创建一个缓冲区,并用实际的图像数据填充它。一旦缓冲区满了,就调用回调函数。

在调用此函数之前,您可能需要获取或设置文件信息,例如多页文件的页码。指获取和设置文件信息

该功能不能与L_RedirectIO

笔记

必需的dll和库

平台

Win32, x64, Linux。

另请参阅

功能

主题

例子

要获得完整的示例代码,请参阅MEMORYCB示例。
这个示例加载一个临时位图,将其保存为内存中的文件,然后将内存驻留文件加载到全局位图句柄中。
它使用带有回调函数的L_LoadMemory来实现加载时绘制特性。参考FILEREADCALLBACK函数,了解回调函数如何绘制图像数据。

/*使用的结构回调函数的用户数据*/类型定义结构体tagIMAGECBPARMHWND HWND;/*当前窗口*/HDC HDC;/*设备上下文当前窗口*/} IMAGECBPARM;静态L_INT EXT_CALLBACK load magecbpBITMAPHANDLE pBitmap,L_UCHAR * pBuffer,L_UINT uFlags,L_INT nRow,L_INT在线,L_VOID * pUserData)静态矩形rLeadSource;静态矩形rLeadDest;IMAGECBPARM* pData = (IMAGECBPARM*) pserdata;/ *如果是第一次调用(第0行),选择并实现调色板*/如果((uFlags & FILEREAD_FIRSTPASS) && (uFlags & FILEREAD_FIRSTROW))/*设置源矩形使用整个位图*/SetRect(&rLeadSource, 0,0, pFileInfo->宽度,pFileInfo->高度);/*设置dest矩形使用整个客户端区域*/GetClientRect (pData - > hwnd, &rLeadDest);/*绘制缓冲区到指定的设备上下文*/L_PaintDCBuffer(pData->hdc, /*设备上下文- from函数参数*/ .pBitmap, /*位图句柄-从函数参数*/&rLeadSource, /*源矩形-全局设置WM_CREATE * /&rLeadSource, /* Source clip rect -与Source rect */相同&rLeadDest, /*目标矩形-全局设置WM_CREATE * /&rLeadDest, /*目标剪辑矩形-与目标矩形*/相同SRCCOPY, /* ROP代码正常涂装*/pBuffer, /*输入缓冲区-从函数参数*/nRow, /*第一行buffer - from函数参数*/(uFlags & FILEREAD_COMPRESSED) ?-nLines: nLines);返回(成功);L_INT LoadMemoryExample(HWND)L_INT nRet;BITMAPHANDLE TmpBitmap;/*位图句柄初始图像*/HGLOBAL hFileInMemory =零;/*内存句柄L_SIZE_T uMemSize;/*数据大小内存* /L_UCHAR * pData;/*指向数据的指针内存* /静态IMAGECBPARM用户数据;/*使用的结构回调函数的用户数据*/FILEREADCALLBACK lpfnCallBack;/*按每像素的比特数加载位图*/nRet = L_LoadBitmap (MAKE_IMAGE_PATH(TEXT(“ImageProcessingDemo \ \ Image3.cmp”&TmpBitmap)),运算符(bitmaphandle), 0, order_bgr, null, null);如果(nRet != SUCCESS)返回nRet;/*保存为CMP文件内存* /nRet = L_SaveBitmapMemory(&hFileInMemory, &TmpBitmap, FILE_CMP, 24, QS, &uMemSize, NULL);如果(nRet != SUCCESS)返回nRet;/*释放临时位图*/L_FreeBitmap (&TmpBitmap);/*获取内存驻留文件*/的指针pData = (L_UCHAR *) GlobalLock (hFileInMemory);/*设置使用的用户数据回调nRet = L_LoadFile函数*/用户数据。hwnd = hwnd;/*当前窗口*/用户数据。hdc = GetDC(hWnd);/*设备上下文当前窗口*//*设置回调函数*/ . L_LoadFile函数lpfnCallBack = (FILEREADCALLBACK)LoadImageCB;/*加载文件,调用lpfnCallBack绘制位图。* /nRet = L_LoadMemory(pData,&TmpBitmap,运算符(BITMAPHANDLE),0,ORDER_BGR,loadfile_store:lpfnCallBack,用户数据,uMemSize,空,空);如果(nRet != SUCCESS)返回nRet;/*清理*/GlobalUnlock (hFileInMemory);GlobalFree (hFileInMemory);L_SaveBitmap(MAKE_IMAGE_PATH(TEXT)“Result.BMP”)), &TmpBitmap, FILE_BMP, 24, 0, NULL);L_FreeBitmap (&TmpBitmap);如果(nRet != SUCCESS)返回nRet;返回成功;/*******************************************************************************/

栅格成像C API帮助
188金宝搏的网址客服|支持|联系我们|知识产权公告
©1991 - 2021领德科技有限公司版权所有。