# include“l_bitmap.h”
L_LTFIL_APIL_INTL_LoadMemory(pBuffer, pBitmap, uStructSize, nBitsPerPixel, nOrder, uFlags, pfnCallback, pUserData, nBufferSize, pLoadOptions, pFileInfo)
使用回调函数从内存加载任何受支持的文件。
指向内存中要加载的文件的指针。
指向位图句柄的指针,该句柄引用要用图像数据填充的位图。
所指向结构的大小(以字节为单位)pBitmap
,用于版本控制。使用sizeof (BITMAPHANDLE)。
产生的位图像素深度。以下是有效值:
价值 | 意义 |
---|---|
0 | 保持原始文件的像素深度(不进行转换)。关于加载12位和16位灰度图像的特别注意事项. |
1 ~ 8 | 合成位图中每个像素的指定位 |
12 | 在合成位图中,每像素12位 |
16 | 在合成位图中,每像素16位 |
24 | 合成位图中每像素24位 |
32 | 在合成位图中每像素32位 |
48 | 合成位图中每像素48位 |
64 | 在合成位图中每像素64位 |
理想的颜色顺序。可能取值为:
价值 | 意义 |
---|---|
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_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]使用多线程加载 |
用于额外处理的可选回调函数。
如果不提供回调函数,则该参数的值为NULL。
如果提供回调函数,则使用函数指针作为此参数的值。
回调函数必须遵循中描述的函数原型FILEREADCALLBACK函数.
可用于传递回调函数所需的一个或多个附加参数的空指针。
要使用此特性,请为变量赋值或创建包含所需字段的结构。然后,在这个参数中,传递变量或结构的地址,将其强制转换为L_VOID*。回调函数在自己的pUserData形参中接收地址,可以将其转换为适当数据类型的指针以访问变量或结构。
如果不需要附加参数,则可以在此参数中传递NULL。
文件在内存中的大小(字节)。
指向可选扩展加载选项的指针。传递NULL以使用默认的加载选项。
指向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.
笔记:
某些文件格式不支持重定向IO。有关更多信息,请参阅不支持重定向IO的文件格式.
中提供了更多选项LOADFILEOPTION结构。
永远不要传递未初始化的参数FILEINFO结构转换为此函数。
必需的dll和库
Win32, x64, Linux。
要获得完整的示例代码,请参阅MEMORYCB示例。
这个示例加载一个临时位图,将其保存为内存中的文件,然后将内存驻留文件加载到全局位图句柄中。
它使用带有回调函数的L_LoadMemory来实现加载时绘制特性。参考FILEREADCALLBACK函数,了解回调函数如何绘制图像数据。
/*使用的结构为回调函数的用户数据*/
类型定义结构体tagIMAGECBPARM
{
HWND HWND;/*当前窗口*/
HDC HDC;/*设备上下文为当前窗口*/
} IMAGECBPARM;
静态L_INT EXT_CALLBACK load magecb
pBITMAPHANDLE 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;
返回成功;
}
/*******************************************************************************/
帮助收藏
光栅net|C API|c++类库|HTML5 JavaScript
文档net|C API|c++类库|HTML5 JavaScript
医疗net|C API|c++类库|HTML5 JavaScript
医疗网络查看器net
188宝金博怎么下载
支持的平台上
.NET、Java、Android和iOS/macOS程序集
C API/ c++类库
HTML5 JavaScript库
您的邮件已发送给技术支持!应该有人联系!如果你的事情很紧急,请回来聊天。
聊天时间:
周一至周五,美国东部时间上午8:30至下午6:00
感谢您的反馈!
请再次填写表格,开始新的聊天。
所有代理目前都离线。
聊天时间:
星期一至星期五
美国东部时间上午8:30 -下午6点
如需与我们联系,请填写此表格,我们将通过电子邮件与您联系。