本教程展示了如何合并和分裂多页图像使用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图像成单个文件。