Как быстро получить параметры графич. файла: 1)размер 2)разрешение 3)глубина цвета - VB

Узнай цену своей работы

Формулировка задачи:

Относит. простой надеюсь вопрос.
Вопрос связан с моими последними темами:
1) размер
чтобы понять, надо ли переворачивать картинку и вписывать "в размер"
2) разрешение
чтобы понять удовлетворяет ли разрешение тому чего хотим 204х196 или 204х98
также чтобы понять не сжата ли картинка вдвое по высоте,если это tiff 204х98
3) глубина цвета (цветная or b/w)
чтобы понять надо ли применять HALFTONE
4) ?компрессия g3/g4/lzw (для tiff)
Все это есть обычно в свойствах файла
Размер конечно можно узнать так(Dimension):
Листинг программы
  1. GetTiffInfo(FileName ) TiffInfo
  2. objShell
  3. objFolder
  4. temp
  5. i
  6. GetTiffInfo.Size =
  7. GetTiffInfo.Pages =
  8. GetTiffInfo.Dimension =
  9. objShell = CreateObject()
  10. objFolder = objShell.(GetFileDir(FileName))
  11. ( objFolder )
  12. objFolderItem
  13. objFolderItem = objFolder.ParseName(GetFileName(FileName))
  14. ( objFolderItem )
  15. GetTiffInfo.Size = objFolder.GetDetailsOf(objFolderItem, )
  16. GetTiffInfo.Pages = objFolder.GetDetailsOf(objFolderItem, )
  17. GetTiffInfo.Dimension = objFolder.GetDetailsOf(objFolderItem, )
  18.  
  19. objFolderItem =
  20. objFolder =
  21. objShell =
  22. TiffEnd:
Но это через одно место, тем более виста/win7 засаживают размер в 31-й параметр а не в 26-й
Причем охота узнать сразу и быстро, до того как дербанить файл через GDI.
Ну, допустим разрешение и размер я через GDI узнаю, не дербаня файла, а как исх.глубину палитры узнать все равно не знаю пока.
Смысл в том, что у нас на входе м.б. правильный уже файл, а мы его дербаним: вертим, масштабируем, мажем полутонами.
При этом еще тратим время и ресурсы.
Т.е. хочется сразу сразу понять: ТЫ КТО?
Чтобы наметить с ним ЧЕГО С ТОБОЙ ДЕЛАТЬ

Решение задачи: «Как быстро получить параметры графич. файла: 1)размер 2)разрешение 3)глубина цвета»

textual
Листинг программы
  1. <font color="blue">Public</font> <font color="blue">Function</font> showEXIFTags(<font color="blue">ByVal</font> sFilename <font color="blue">As</font> <font color="blue">String</font>) <font color="blue">As</font> <font color="blue">String</font>
  2. <font color="blue">Dim</font> retStatus <font color="blue">As</font> Status
  3. <font color="blue">Dim</font> m_img <font color="blue">As</font> <font color="blue">Long</font>
  4. <font color="blue">Dim</font> PropertyCount <font color="blue">As</font> <font color="blue">Long</font>
  5. <font color="blue">Dim</font> prop <font color="blue">As</font> GDIPPropertyItem
  6. <font color="blue">Dim</font> i <font color="blue">As</font> <font color="blue">Long</font>
  7. <font color="blue">Dim</font> sItem <font color="blue">As</font> <font color="blue">String</font>
  8. <font color="blue">Dim</font> j <font color="blue">As</font> <font color="blue">Long</font>
  9. <font color="blue">Dim</font> v <font color="blue">As</font> Variant
  10. <font color="blue">Dim</font> s <font color="blue">As</font> <font color="blue">String</font>
  11. <font color="blue">Dim</font> strFull <font color="blue">As</font> <font color="blue">String</font>
  12. strFull = <font color="teal">""</font>
  13. retStatus = Execute(StartUpGDIPlus(GdiPlusVersion))
  14. <font color="blue">If</font> retStatus = OK <font color="blue">Then</font>
  15. GdipInitialized = True
  16. <font color="blue">Else</font>
  17. showEXIFTags = <font color="teal">"GDI Problem!"</font>
  18. <font color="blue">Exit</font> <font color="blue">Function</font>
  19. <font color="blue">End</font> <font color="blue">If</font>
  20. retStatus = Execute(GdipLoadImageFromFile(StrPtr(sFilename), m_img))
  21. <font color="blue">If</font> retStatus = OK <font color="blue">Then</font>
  22. <font color="blue">Call</font> Execute(GdipGetPropertyCount(m_img, PropertyCount))
  23. <font color="blue">For</font> i = <font color="darkblue"><b>1</b></font> <font color="blue">To</font> PropertyCount
  24. <font color="blue">Set</font> prop = PropertyItem(i, PropertyCount, m_img)
  25. sItem = CStr(i) & <font color="teal">" "</font> & prop.<font color="blue">Name</font> & <font color="teal">" "</font>
  26. <font color="blue">Select</font> <font color="blue">Case</font> prop.ItemType
  27. <font color="blue">Case</font> PropertyTagTypeASCII
  28. sItem = sItem & prop.ParseString()
  29. <font color="blue">Case</font> PropertyTagTypeRational, PropertyTagTypeSRational
  30. <font color="blue">For</font> j = <font color="darkblue"><b>1</b></font> <font color="blue">To</font> prop.ValueCount
  31. <font color="blue">If</font> (j > <font color="darkblue"><b>1</b></font>) <font color="blue">Then</font>
  32. sItem = sItem & <font color="teal">", "</font>
  33. <font color="blue">End</font> <font color="blue">If</font>
  34. v = prop.ParseRational(j)
  35. <font color="#00AA00">'sItem = sItem & v(1) & <font color="teal">"/"</font> & v(2)</font>
  36. sItem = sItem & CStr(v(<font color="darkblue"><b>1</b></font>) / v(<font color="darkblue"><b>2</b></font>))
  37. <font color="blue">Next</font> j
  38. <font color="blue">Case</font> PropertyTagTypeLong
  39. <font color="blue">For</font> j = <font color="darkblue"><b>1</b></font> <font color="blue">To</font> prop.ValueCount
  40. <font color="blue">If</font> (j > <font color="darkblue"><b>1</b></font>) <font color="blue">Then</font>
  41. sItem = sItem & <font color="teal">", "</font>
  42. <font color="blue">End</font> <font color="blue">If</font>
  43. sItem = sItem & prop.ParseLong(j)
  44. <font color="blue">Next</font> j
  45. <font color="blue">Case</font> PropertyTagTypeShort
  46. <font color="blue">For</font> j = <font color="darkblue"><b>1</b></font> <font color="blue">To</font> prop.ValueCount
  47. <font color="blue">If</font> (j > <font color="darkblue"><b>1</b></font>) <font color="blue">Then</font>
  48. sItem = sItem & <font color="teal">", "</font>
  49. <font color="blue">End</font> <font color="blue">If</font>
  50. sItem = sItem & prop.ParseShort(j)
  51. <font color="blue">Next</font> j
  52. <font color="blue">Case</font> PropertyTagTypeUndefined
  53. <font color="blue">ReDim</font> b(<font color="darkblue"><b>0</b></font> <font color="blue">To</font> prop.ValueCount - <font color="darkblue"><b>1</b></font>) <font color="blue">As</font> <font color="blue">Byte</font>
  54. prop.GetData b
  55. <font color="blue">For</font> j = <font color="darkblue"><b>1</b></font> <font color="blue">To</font> prop.ValueCount - <font color="darkblue"><b>1</b></font>
  56. <font color="blue">If</font> (j > <font color="darkblue"><b>1</b></font>) <font color="blue">Then</font>
  57. sItem = sItem & <font color="teal">" "</font>
  58. <font color="blue">End</font> <font color="blue">If</font>
  59. s = Hex(b(j - <font color="darkblue"><b>1</b></font>))
  60. <font color="blue">If</font> Len(s) = <font color="darkblue"><b>1</b></font> <font color="blue">Then</font> s = <font color="teal">"0"</font> & s
  61. sItem = sItem & s
  62. <font color="blue">Next</font> j
  63. <font color="blue">Case</font> <font color="blue">Else</font>
  64. sItem = sItem & prop.ItemType & <font color="teal">" "</font> & prop.length
  65. <font color="blue">End</font> <font color="blue">Select</font>
  66. <font color="blue">If</font> Right(sItem, <font color="darkblue"><b>1</b></font>) = Chr(<font color="darkblue"><b>0</b></font>) <font color="blue">Then</font> <font color="#00AA00">'убрать нулевой символ на конце</font>
  67. sItem = Left(sItem, Len(sItem) - <font color="darkblue"><b>1</b></font>)
  68. <font color="blue">End</font> <font color="blue">If</font>
  69. strFull = strFull & sItem & vbCrLf
  70. <font color="blue">Next</font> i
  71. <font color="blue">Else</font>
  72. strFull = <font color="teal">"Not a graphic file!"</font>
  73. <font color="blue">End</font> <font color="blue">If</font>
  74. showEXIFTags = strFull
  75. retStatus = Execute(GdipDisposeImage(m_img))
  76. <font color="blue">If</font> GdipInitialized = True <font color="blue">Then</font>
  77. retStatus = Execute(ShutdownGDIPlus)
  78. <font color="blue">End</font> <font color="blue">If</font>
  79. <font color="blue">End</font> <font color="blue">Function</font>

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы