ImgProcUnit.cpp
上传用户:pass2008
上传日期:2021-07-05
资源大小:3299k
文件大小:3k
源码类别:

Internet/IE编程

开发平台:

Visual C++

  1. #include "StdAfx.h"
  2. #include "ImgProcUnit.h"
  3. #include <stdio.h>
  4. #include <WinInet.h>
  5. ImgProcUnit::ImgProcUnit(CStringArray& imgLinks, CString& dmURL)
  6. {
  7. if (imgLinks.GetCount()>0)
  8. {
  9. int count = imgLinks.GetCount();
  10. for (int i=0; i<count; i++)
  11. {
  12. imageLinks.Add(imgLinks.GetAt(i));
  13. }
  14. }
  15. domainURL = dmURL;
  16. imgProcClass = NULL;
  17. }
  18. ImgProcUnit::~ImgProcUnit(void)
  19. {
  20. if (imgProcClass)
  21. {
  22. imgProcClass = NULL;
  23. }
  24. }
  25. BOOL ImgProcUnit::downloadImages(void)
  26. {
  27. /*
  28. CInternetSession inetSession("ImageCollections");
  29. CHttpFile* imgFile;
  30. for (int i=0; i<imageLinks.GetCount(); i++)
  31. {
  32. try
  33. {
  34. imgFile = (CHttpFile*)inetSession.OpenURL(imageLinks.GetAt(i));
  35. if (imgFile != INVALID_HANDLE_VALUE)
  36. {
  37. dwFileSize = imgFile->GetLength();
  38. }
  39. }
  40. catch (CInternetException* e)
  41. {
  42. imgFile = NULL;
  43. e->Delete();
  44. }
  45. }
  46. HINTERNET hNet, hUrlFile;
  47. CFile imgFile;
  48. for (int i=0; i<imageLinks.GetCount(); i++)
  49. {
  50. hNet = ::InternetOpen(_T(""), PRE_CONFIG_INTERNET_ACCESS, NULL, INTERNET_INVALID_PORT_NUMBER, 0);
  51. hUrlFile = ::InternetOpenUrl(hNet, imageLinks.GetAt(i), NULL, 0, INTERNET_FLAG_RELOAD, 0);
  52. }
  53. */
  54. CString imgDirectory(_T("C:\ImageDirectory")); //图片保存总目录
  55. if (!::PathIsDirectory(imgDirectory))
  56. {
  57. if (!::CreateDirectory(imgDirectory, NULL))
  58. {
  59. return FALSE;
  60. }
  61. }
  62. CString recordName = domainURL; //每个网页图片保存目录
  63. elimInvalidPrefixSymbols(recordName);
  64. if (!::PathIsDirectory(imgDirectory+_T("\")+recordName))
  65. {
  66. if (!::CreateDirectory(imgDirectory+_T("\")+recordName, NULL))
  67. {
  68. return FALSE;
  69. }
  70. }
  71. /*
  72. HANDLE rhFile = ::CreateFile(_T("C:\Images\")+recordName, 
  73.                   GENERIC_ALL,
  74.                   0,
  75.                     NULL,
  76.                   OPEN_ALWAYS,
  77.                   FILE_ATTRIBUTE_NORMAL,
  78.                   NULL);
  79. if (INVALID_HANDLE_VALUE == rhFile)
  80. {
  81. return FALSE;
  82. }
  83. */
  84. HRESULT hr;
  85. CString prefixName;
  86. CString imgName;
  87. for (int i=0; i<imageLinks.GetCount(); i++)
  88. {
  89. prefixName = imageLinks.GetAt(i);
  90. elimInvalidPrefixSymbols(prefixName);
  91. imgName = imgDirectory+_T("\")+recordName+_T("\")+prefixName; //文件名
  92. hr = ::URLDownloadToFile(NULL, imageLinks.GetAt(i), imgName, 0, NULL);
  93. if (hr == S_OK)
  94. {
  95. imageNames.Add(imgName);
  96. }
  97. else
  98. {
  99. imageNames.Add(_T("Download Error!"));
  100. }
  101. }
  102. return TRUE;
  103. }
  104. BOOL ImgProcUnit::elimInvalidPrefixSymbols(CString& strPrefix)
  105. {
  106. strPrefix.Remove('\');
  107. strPrefix.Remove('/');
  108. strPrefix.Remove(':');
  109. strPrefix.Remove('*');
  110. strPrefix.Remove('?');
  111. strPrefix.Remove('"');
  112. strPrefix.Remove('<');
  113. strPrefix.Remove('>');
  114. strPrefix.Remove('|');
  115. //strPrefix.Remove('.');
  116. strPrefix.Remove('_');
  117. strPrefix.Remove('-');
  118. return TRUE;
  119. }
  120. BOOL ImgProcUnit::imageEdgeProcess(void)
  121. {
  122. for (int i=0; i<imageNames.GetCount(); i++)
  123. {
  124. if (imageNames.GetAt(i) != _T("Download Error!"))
  125. {
  126. if (imgProcClass)
  127. {
  128. delete imgProcClass;
  129. imgProcClass = NULL;
  130. }
  131. imgProcClass = new CDib;
  132. imgProcClass->imageLoadOperation(imageNames.GetAt(i), 1);
  133. }
  134. }
  135. return TRUE;
  136. }