powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Получить свойства графического файла
8 сообщений из 8, страница 1 из 1
Получить свойства графического файла
    #35350214
smiller
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможно ли средствами VB получить размер в пикселях и количество цветов графического файла (.png)? В каком направлении двигаться?
...
Рейтинг: 0 / 0
Получить свойства графического файла
    #35350757
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В направлении GDI+.
...
Рейтинг: 0 / 0
Получить свойства графического файла
    #35357627
smiller
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может быть есть такие гиганты мысли, которые могут показать малюююююсенький примерчик? :)
...
Рейтинг: 0 / 0
Получить свойства графического файла
    #35357708
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не совсем ответ на вопрос, но все же:

http://www.vbaccelerator.com/home/Vb/Code/vbMedia/Using_GDI_Plus/Reading_and_Writing_JPG__PNG__TIF_and_GIF_Files/article.asp

Успехов
...
Рейтинг: 0 / 0
Получить свойства графического файла
    #35359222
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
smiller,
малюююююсенький примерчик:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
Option Explicit

Private Type GdiplusStartupInput
   GdiplusVersion As Long
   DebugEventCallback As Long
   SuppressBackgroundThread As Long
   SuppressExternalCodecs As Long
End Type

' GDI+ Status
Private Enum GpStatus
   OK =  0 
   GenericError =  1 
   InvalidParameter =  2 
   OutOfMemory =  3 
   ObjectBusy =  4 
   InsufficientBuffer =  5 
   NotImplemented =  6 
   Win32Error =  7 
   WrongState =  8 
   Aborted =  9 
   FileNotFound =  10 
   ValueOverflow =  11 
   AccessDenied =  12 
   UnknownImageFormat =  13 
   FontFamilyNotFound =  14 
   FontStyleNotFound =  15 
   NotTrueTypeFont =  16 
   UnsupportedGdiplusVersion =  17 
   GdiplusNotInitialized =  18 
   PropertyNotFound =  19 
   PropertyNotSupported =  20 
   ProfileNotFound =  21 
End Enum

Private Declare Function GdiplusStartup Lib "gdiplus" ( _
   rToken As Long, rInput As GdiplusStartupInput, pvOutput As Any) As GpStatus
Private Declare Sub GdiplusShutdown Lib "gdiplus" ( _
   ByVal Token As Long)

Private Declare Function GdipCreateBitmapFromFile Lib "gdiplus" ( _
   ByVal FileNamePtr As Long, nBitmap As Long) As GpStatus
Private Declare Function GdipDisposeImage Lib "gdiplus" ( _
   ByVal nImage As Long) As GpStatus

Private Enum PixelFormats
   PixelFormatUndefined = &H0&
   PixelFormatDontCare = PixelFormatUndefined
   PixelFormatMax = &HF&
   PixelFormat1_8 = &H100&
   PixelFormat4_8 = &H400&
   PixelFormat8_8 = &H800&
   PixelFormat16_8 = &H1000&
   PixelFormat24_8 = &H1800&
   PixelFormat32_8 = &H2000&
   PixelFormat48_8 = &H3000&
   PixelFormat64_8 = &H4000&
   PixelFormat16bppRGB555 = &H21005
   PixelFormat16bppRGB565 = &H21006
   PixelFormat16bppGrayScale = &H101004
   PixelFormat16bppARGB1555 = &H61007
   PixelFormat24bppRGB = &H21808
   PixelFormat32bppRGB = &H22009
   PixelFormat32bppARGB = &H26200A
   PixelFormat32bppPARGB = &HD200B
   PixelFormat48bppRGB = &H10300C
   PixelFormat64bppARGB = &H34400D
   PixelFormat64bppPARGB = &H1C400E
   PixelFormatGDI = &H20000
   PixelFormat1bppIndexed = &H30101
   PixelFormat4bppIndexed = &H30402
   PixelFormat8bppIndexed = &H30803
   PixelFormatAlpha = &H40000
   PixelFormatIndexed = &H10000
   PixelFormatPAlpha = &H80000
   PixelFormatExtended = &H100000
   PixelFormatCanonical = &H200000
End Enum

Private Declare Function GdipGetImagePixelFormat Lib "gdiplus" ( _
   ByVal nImage As Long, PixelFormat As PixelFormats) As GpStatus

Private Declare Function GdipGetImageWidth Lib "gdiplus" ( _
   ByVal nImage As Long, Width As Long) As Long
Private Declare Function GdipGetImageHeight Lib "gdiplus" ( _
   ByVal nImage As Long, Height As Long) As Long

Private Sub Command1_Click()
 Dim GdipSession As Long
 Dim gpsi As GdiplusStartupInput
 Dim gpsResult As GpStatus
 Dim nBitmap As Long
 Dim PxFmt As PixelFormats
 Dim sPxFmt As String
 Dim lWidth As Long, lHeight As Long
 
 With gpsi
    .GdiplusVersion =  1 
    .DebugEventCallback =  0 
    .SuppressBackgroundThread =  0 
    .SuppressExternalCodecs =  1 
 End With
 
 gpsResult = GdiplusStartup(GdipSession, gpsi, ByVal  0 &)
 If gpsResult <> OK Then
    MsgBox "GDI+ Initialization Failed. Error code " & gpsResult, _
           vbCritical, Me.Caption
    Exit Sub
 End If

 gpsResult = GdipCreateBitmapFromFile(StrPtr("F:\werqw1.png"), nBitmap)
 If gpsResult = OK Then
    gpsResult = GdipGetImageWidth(nBitmap, lWidth)
    If gpsResult = OK Then
       Debug.Print "Image width is " & lWidth & " pixel(s)"
    Else
       MsgBox "Image width was not retrieved. Error code " & gpsResult, _
              vbExclamation, Me.Caption
    End If
    
    gpsResult = GdipGetImageHeight(nBitmap, lHeight)
    If gpsResult = OK Then
       Debug.Print "Image height is " & lHeight & " pixel(s)"
    Else
       MsgBox "Image Height was not retrieved. Error code " & gpsResult, _
              vbExclamation, Me.Caption
    End If
    
    gpsResult = GdipGetImagePixelFormat(nBitmap, PxFmt)
    If gpsResult = OK Then
       Select Case PxFmt
       Case PixelFormatUndefined: sPxFmt = "Undefined"
       Case PixelFormatMax: sPxFmt = "Max"
       Case PixelFormat1_8: sPxFmt = "1_8"
       Case PixelFormat4_8: sPxFmt = "4_8"
       Case PixelFormat8_8: sPxFmt = "8_8"
       Case PixelFormat16_8: sPxFmt = "16_8"
       Case PixelFormat24_8: sPxFmt = "24_8"
       Case PixelFormat32_8: sPxFmt = "32_8"
       Case PixelFormat48_8: sPxFmt = "48_8"
       Case PixelFormat64_8: sPxFmt = "64_8"
       Case PixelFormat16bppRGB555: sPxFmt = "Undefined"
       Case PixelFormat16bppRGB565: sPxFmt = "16bppRGB565"
       Case PixelFormat16bppGrayScale: sPxFmt = "16bppGrayScale"
       Case PixelFormat16bppARGB1555: sPxFmt = "16bppARGB1555"
       Case PixelFormat24bppRGB: sPxFmt = "24bppRGB"
       Case PixelFormat32bppRGB: sPxFmt = "32bppRGB"
       Case PixelFormat32bppARGB: sPxFmt = "32bppARGB"
       Case PixelFormat32bppPARGB: sPxFmt = "32bppPARGB"
       Case PixelFormat48bppRGB: sPxFmt = "48bppRGB"
       Case PixelFormat64bppARGB: sPxFmt = "64bppARGB"
       Case PixelFormat64bppPARGB: sPxFmt = "64bppPARGB"
       Case PixelFormatGDI: sPxFmt = "GDI"
       Case PixelFormat1bppIndexed: sPxFmt = "1bppIndexed"
       Case PixelFormat4bppIndexed: sPxFmt = "4bppIndexed"
       Case PixelFormat8bppIndexed: sPxFmt = "8bppIndexed"
       Case PixelFormatAlpha: sPxFmt = "Alpha"
       Case PixelFormatIndexed: sPxFmt = "Indexed"
       Case PixelFormatPAlpha: sPxFmt = "PAlpha"
       Case PixelFormatExtended: sPxFmt = "Extended"
       Case PixelFormatCanonical: sPxFmt = "Canonical"
       Case Else: sPxFmt = "Unknown"
       End Select
       Debug.Print "Pixel format is " & sPxFmt
    Else
       MsgBox "Image format was not retrieved. Error code " & gpsResult, _
              vbExclamation, Me.Caption
    End If
 
    GdipDisposeImage nBitmap
 Else
    MsgBox "Image was not loaded. Error code " & gpsResult, _
           vbExclamation, Me.Caption
 End If
 
 GdiplusShutdown GdipSession
End Sub
Наверное, лучше воспользоваться классами с упомянутого vbAccelerator.
...
Рейтинг: 0 / 0
Получить свойства графического файла
    #35360805
smiller
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Бенедикт, низкий тебе поклон! Все работает, замечательно работает! Ай, голова!
С меня пиво :)
...
Рейтинг: 0 / 0
Получить свойства графического файла
    #35501345
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поправочка :). Вместо
Код: plaintext
Case PixelFormat16bppRGB555: sPxFmt = "Undefined"
читать
Код: plaintext
Case PixelFormat16bppRGB555: sPxFmt = "16bppRGB555"
...
Рейтинг: 0 / 0
Получить свойства графического файла
    #35501374
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на 2000 винде потребуется отдельная устаовка GDI+оснастки от микрософта
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Получить свойства графического файла
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]