L_OptOptimizeBuffer

# include“l_bitmap.h”

L_LTIMGOPT_APIL_INTL_OptOptimizeBuffer (pOrgImgBuffer、uOrgImgBufferSize phOptImgBuffer、puOptImgBufferSize pOptImgOptions, pfnOptBufferCB, pUserData)

优化图像格式支持缓冲区使用传递的优化选项。

参数

L_UCHAR* pOrgImgBuffer

指针指向原始图像在内存中缓冲。图像格式的记忆应该是其中一个图像优化支持的格式

L_SIZE_TuOrgImgBufferSize

原始图像的大小,以字节为单位,在内存中,这是引用的pOrgImgBuffer参数。

HGLOBAL* phOptImgBuffer

地址的内存句柄被更新优化的图像缓冲区。用户负责释放它通过调用GlobalFree窗口函数。

L_SIZE_T* puOptImgBufferSize

指针变量更新与优化的图像缓冲区的大小在内存中,这是引用的phOptImgBuffer

pOPTIMIZEIMAGEOPTIONSpOptImgOptions

指针指向一个OPTIMIZEIMAGEOPTIONS包含选项用于结构优化。通过零使用默认的优化选项。

OPTIMIZEBUFFERCALLBACKpfnOptBufferCB

可选的回调函数进行额外的处理。如果你不提供一个回调函数,使用NULL作为该参数的值。如果你提供一个回调函数,使用函数指针作为该参数的值。回调函数必须遵守所描述的函数原型OPTIMIZEBUFFERCALLBACK函数。

L_VOID* pUserData

空指针,您可以使用它通过一个或多个回调函数需要额外的参数。要使用该功能,赋值给一个变量或创建一个结构,其中包含你需要的尽可能多的领域。然后,在这个参数,通过变量的地址或结构,铸造L_VOID *。回调函数,接收地址的pUserData参数,可以把它适当的数据类型的指针来访问变量或结构。如果不需要额外的参数,该参数可以传递NULL。

返回

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

评论

这个函数优化指定的缓冲,减少其大小,根据指定的优化选项。

将初始化的函数phOptImgBuffer处理和分配所需的存储优化的图像。因为该函数分配存储优化图像,用户必须通过调用Windows GlobalFree释放分配的内存的函数。

注意,要优化的图像缓冲区应该的图像优化支持的格式否则,函数将返回一个错误。

您可以优化一个图像在内存中缓冲如下:

  1. 将图像保存到优化(原始图像)在内存中,并得到一个指向第一个字节的图像。通过这个指针的pOrgImgBuffer参数。通过大小,以字节为单位,在记忆的形象uOrgImgBufferSize参数。

  2. 声明一个内存处理(HGLOBAL)作为phOptImgBuffer参数变量并将其地址。该函数将分配和释放内存需要保存优化图像缓冲区。

  3. 声明一个长整数(L_UINT32)变量。通过这个变量的地址puOptImgBufferSize参数。这个函数将更新该变量的大小,以字节为单位,优化的图像缓冲区。

  4. 确定使用的优化选项,通过下列之一:

    通过零的pOptImgOptions参数优化图像缓冲区使用默认的优化选项。

    被调用默认的优化选项L_OptGetDefaultOptions功能、结构和更新值。通过更新的地址pOptImgOptions优化选择结构参数。

  5. 调用这个函数来优化图像缓冲区和更新phOptImgBuffer和puOptImgBufferSize变量优化缓冲区和缓冲区大小。

这个函数不支持32位灰度图像。它返回错误代码ERROR_GRAY32_UNSUPPORTED如果一个32位的灰度图像是传递给这个函数。

必需的dll和库

平台

x64 Win32。

另请参阅

功能

主题

例子

这个函数会默认优化选项来优化的图像缓冲区指出phOrgImgBuffer参数。

L_INT EXT_CALLBACK fnOptBufferCB (L_INT nPercent,L_VOID * pUserData){UNREFERENCED_PARAMETER (pUserData);L_TCHAR buf [256];/ /消息缓冲区wsprintf (buf文本(“% d”),nPercent);对话框(零、缓冲区、文本(“优化”),MB_OK);返回成功;}L_INT OptOptimizeBufferExample (L_UCHAR * phOrgImgBuffer,L_SIZE_T uOrgImgBufferSize,L_VOID * pUserData){HGLOBAL hOptImgBuffer =零;/ *处理优化缓冲区内存* /L_SIZE_T uOptImgBufferSize = 0;/ *优化缓冲区的大小内存* /OPTIMIZEIMAGEOPTIONS OptImgOptions;* / / *优化选择结构L_SIZE_T * pOptImgBuffer =零;/ /默认的优化选项。L_INT nRet = L_OptGetDefaultOptions (&OptImgOptions,运算符(OPTIMIZEIMAGEOPTIONS));如果(nRet = =成功){/ /优化图像缓冲区nRet = L_OptOptimizeBuffer (phOrgImgBuffer,uOrgImgBufferSize,&hOptImgBuffer,/ /更新。&uOptImgBufferSize,/ /更新。&OptImgOptions,fnOptBufferCB,pUserData);如果(nRet = =成功){/ /优化缓冲,我们必须锁定它。pOptImgBuffer = (L_SIZE_T *) GlobalLock (hOptImgBuffer);如果(pOptImgBuffer){/ *现在,pOptImgBuffer愿;您可以创建一个磁盘文件示例和转储缓冲。* // /。/ /。/ /。/ /释放内存缓冲区。GlobalUnlock (hOptImgBuffer);/ /免费由L_OptOptimizeBuffer Meory缓冲区分配的功能。GlobalFree (hOptImgBuffer);}}}返回nRet;}

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