Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Загрузить jpg из памяти Добавлено: 24.07.05 21:13  

Автор вопроса:  Calhoon | Web-сайт: 4elovekssn.blog.ru | ICQ: 789764 
Проблема такая: читаю содержимое зашифрованной jpg в переменную, в памяти расшифровываю. Как теперь загрузить ее в Image? LoadPicture ж не прокатит...

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #1
Добавлено: 24.07.05 23:47
кидал на форуме неоднократно!

Private Declare Function OleCreatePictureIndirect Lib "OLEPRO32.DLL" (lpPictDesc As PictDesc, ByRef riid As Byte, ByVal fPictureOwnsHandle As Long, iPic As IPicture) As Long
Private Declare Function CreateStreamOnHGlobal Lib "ole32" (ByVal hGlobal As Long, ByVal fDeleteOnRelease As Long, ppstm As Any) As Long
Private Declare Function OleLoadPicture Lib "olepro32" (pStream As Any, ByVal lSize As Long, ByVal fRunmode As Long, ByRef riid As Byte, ppvObj As Any) As Long
Private Declare Function CLSIDFromString Lib "ole32" (ByVal lpsz As Any, ByRef pclsid As Byte) As Long

'--------------------------------------------------------------------------------
' Проект     :  OfflineClient
' Процедура  :  PictureFromMemory
' Описание   :  Получение IPicture из массива
' Кем создан :  SNE
' Дата-Время :  15.11.2004-21:45:57
'
' Параметры  :  btData()    - Данные картинки
'--------------------------------------------------------------------------------
Public Function PictureFromMemory(ByRef btData() As Byte) As IPicture
    Dim IID_IPicture(16) As Byte
    Dim pGlobal As Long, pStream As IUnknown

    Const sIID_IPicture = "{7BF80980-BF32-101A-8BBB-00AA00300CAB}"

    pGlobal = GlobalAlloc(0&, UBound(btData) + vbNull)
    Call CopyMemory(ByVal pGlobal, btData(0), UBound(btData) + vbNull)

    If CreateStreamOnHGlobal(pGlobal, True, pStream) = 0& Then
        If CLSIDFromString(StrPtr(sIID_IPicture), IID_IPicture(0)) = 0& Then
            Call OleLoadPicture(ByVal ObjPtr(pStream), UBound(btData) + vbNull, False, IID_IPicture(0), PictureFromMemory)
        End If
    End If
    If PictureFromMemory Is Nothing Then Call GlobalFree(pGlobal)
End Function

Ответить

Номер ответа: 2
Автор ответа:
 Barsik



Разработчик Offline Client

ICQ: 343368641 

Вопросов: 17
Ответов: 686
 Web-сайт: barsik.newmail.ru
 Профиль | | #2
Добавлено: 25.07.05 21:02
дык людям проще спросить, чем по форуму рыскать ;)

Ответить

Номер ответа: 3
Автор ответа:
 Calhoon



ICQ: 789764 

Вопросов: 90
Ответов: 230
 Web-сайт: 4elovekssn.blog.ru
 Профиль | | #3
Добавлено: 27.07.05 13:51
sne, в твоем коде дофига необлявленных типов!..

Ответить

Номер ответа: 4
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #4
Добавлено: 27.07.05 20:14
Private Type PictDesc
    cbSizeofStruct  As Long
    picType         As Long
    hImage          As Long
    xExt            As Long
    yExt            As Long
End Type


Один стандартный тип взятый из ApiViewer'a, это дофига :))

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам