本教程展示了如何在Windows C/ c++ API应用程序中使用LEADTOOLS SDK合并和分割多页图像。
| 概述 | |
|---|---|
| 总结 | 本教程演示如何在Windows CDLL应用程序中使用LEADTOOLS SDK处理多页图像。 |
| 完成时间 | 30分钟 |
| Visual Studio项目 | 下载教程项目(19kb) |
| 平台 | Windows C DLL应用程序 |
| IDE | Visual Studio 2017, 2019 |
| 开发许可 | 下载LEADTOOLS |
在开始合并和分割多页图像- Windows C DLL教程,熟悉创建项目和加载/显示图像的基本步骤添加引用和设置License而且加载,显示和保存图像教程。
中创建的64位Windows API项目的副本开始加载,显示和保存图像教程。如果项目不可用,请按照该教程中的步骤创建它。
确保以下所需的头文件和DLL文件包含在预编译的头文件(或pch.h或stdafx.h,取决于所使用的Visual Studio的版本)。
# include“C: \ LEADTOOLS21 \ \ L_Bitmap.h包括”//使用安装LEADTOOLS的实际路径# pragma评论(自由,“C: \ \ LEADTOOLS21 \ \ Lib \ \ CDLL \ \ x64 \ \ Ltkrn_x.lib”)# pragma评论(自由,“C: \ \ LEADTOOLS21 \ \ Lib \ \ CDLL \ \ x64 \ \ Ltfil_x.lib”)//文件加载和保存# pragma评论(自由,“C: \ \ LEADTOOLS21 \ \ Lib \ \ CDLL \ \ x64 \ \ Ltdis_x.lib”)/ /图像显示
请注意
有关应用程序所需的dll的完整列表,请参阅要包含在应用程序中的文件- C API.
许可证解锁项目所需的特性。它必须在调用任何工具包功能之前设置。有关详细信息,包括针对不同平台的教程,请参阅设置运行时License.
有两种类型的运行时许可证:
请注意
中更详细地介绍了添加LEADTOOLS引用和设置许可证添加引用和设置License教程。
创建了项目、添加了引用、设置了许可证、添加了加载、显示和保存代码之后,就可以开始编码了。
以下步骤是针对Visual Studio 2019的;对于其他版本的Visual Studio,它们可能会有所不同。
去解决方案资源管理器然后双击资源文件(.rc)。
添加一个新的合并图片的菜单项文件下拉菜单,之间开放而且保存物品。接下来添加一个新的分割文件的菜单项文件下拉菜单,之间合并图片而且保存物品。
去指向功能和开关(wmId)语句的下面WM_COMMANDCase,添加一个新的Case:
开关(wmId){情况下ID_FILE_MERGEIMAGES:{TCHAR szOldTitle [1024];GetWindowText (hWnd, szOldTitle, 1024);WIN32_FIND_DATA = {0};HANDLE hfindng = FindFirstFile(TEXT)“C: \ \ LEADTOOLS21 \ \ \ \ \ \ * . png图像资源”), &findData);BOOL foundPage = (hfindng != INVALID_HANDLE_VALUE);而(foundPage){szPageFilename TCHAR szWindowTitle [1024], [1024];wsprintf (szWindowTitle文本("正在追加页面%s…"), findData.cFileName);SetWindowText (hWnd, szWindowTitle);睡眠(200);//延迟查看标题wsprintf (szPageFilename文本(“C: \ \ LEADTOOLS21 \ \资源图片\ \ \ \ % s”), findData.cFileName);AppendTiffPage (szPageFilename文本(“C: \ \ LEADTOOLS21 \ \ \ \ \ \图片资源merged.tif”));foundPage = FindNextFile(hfindng, &findData);}如果(hFindPng ! = INVALID_HANDLE_VALUE)FindClose (hFindPng);SetWindowText (hWnd, szOldTitle);}打破;//保持其余代码不变
将下面的代码添加到AppendTiffPage函数。这个函数可以放在上面指向功能:
无效AppendTiffPage (TCHAR * pszInputPageFile,常量TCHAR * pszOutputMultipageTiff){BmpPage = {0};L_INT nRet = L_LoadBitmap(pszInputPageFile, &BmpPage,运算符Bitmaphandle, 0, order_bgr, null, null);如果(成功= = nRet){SAVEFILEOPTION = {0};L_GetDefaultSaveFileOption (&saveOption运算符SAVEFILEOPTION);saveOption。PageNumber = 2;L_SaveBitmap((TCHAR*)pszOutputMultipageTiff, &BmpPage, FILE_TIFLZW, 0,2, &saveOption);L_FreeBitmap (&BmpPage);}}
在指向函数中添加一个新案例开关(wmId)声明:
开关(wmId){情况下ID_FILE_SPLITFILE:SplitFile(文本(“C: \ \ LEADTOOLS21 \ \ \ \ \ \图片资源merged.tif”));打破;//保持其余代码不变
将下面的代码添加到SplitFile功能,可以放在上面指向功能:
# include < shlwapi.h ># pragma评论(自由,“Shlwapi.lib”)无效SplitFile (常量TCHAR * pszMultipageFile){TCHAR szPageBaseName [1024];StrCpy (szPageBaseName pszMultipageFile);PathRemoveExtension (szPageBaseName);FILEINFO FILEINFO = {0};//IMPORTANT:在使用该结构之前必须将其归零L_FileInfo (TCHAR *) pszMultipageFile &fileInfo,运算符FILEINFO FILEINFO_TOTALPAGES, NULL);为(inti = 1;我< = fileInfo.TotalPages;+ + i){BmpPage = {0};LOADFILEOPTION LoadOption = {0};L_GetDefaultLoadFileOption (&LoadOption运算符LOADFILEOPTION);LoadOption。PageNumber =我;L_INT nRet = L_LoadBitmap((TCHAR*)pszMultipageFile, &BmpPage,运算符BITMAPHANDLE, 0, order_bgorgray, &LoadOption, NULL);如果(成功! = nRet)/ /跳过这一页打破;TCHAR szPageName [1024];wsprintf (szPageName文本(“% s_page % d.png”), szPageBaseName,我);L_SaveBitmap(szPageName, &BmpPage, FILE_PNG, 0,9, NULL);L_FreeBitmap (&BmpPage);}}
通过按运行项目F5,或选择调试->开始调试.
如果正确地执行了这些步骤,应用程序应该会运行。选择文件->合并图片文件中的[PNG]文件图片目录到一个单一的[TIFF]文件。
选择文件->分割文件把每一页分开merged.tif转换为[PNG]文件,并在名称后面附加页码。
本教程介绍了如何将一个目录中的多个[PNG]图像合并到一个[TIFF]文件中。还学习了如何将多页[TIFF]图像分割成单独的文件。