本教程展示了如何在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_COMMAND
Case,添加一个新的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]图像分割成单独的文件。