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