Вопрос here прекрасно объясняет, как преобразовать изображение в виде изображения в массив байтов в VB6. Я хочу сделать обратное и загрузить изображение с изображения из байтового массива.Загрузка изображения из байтового массива в VB6
Я нашел частичное решение here, которое использует следующий код
Public Function ArrayToPicture(inArray() As Byte, Offset As Long, Size As Long) As IPicture
' function creates a stdPicture from the passed array
' Offset is first item in array: 0 for 0 bound arrays
' Size is how many bytes comprise the image
Dim o_hMem As Long
Dim o_lpMem As Long
Dim aGUID(0 To 3) As Long
Dim IIStream As IUnknown
aGUID(0) = &H7BF80980 ' GUID for stdPicture
aGUID(1) = &H101ABF32
aGUID(2) = &HAA00BB8B
aGUID(3) = &HAB0C3000
o_hMem = GlobalAlloc(&H2&, Size)
If Not o_hMem = 0& Then
o_lpMem = GlobalLock(o_hMem)
If Not o_lpMem = 0& Then
CopyMemory ByVal o_lpMem, inArray(Offset), Size
Call GlobalUnlock(o_hMem)
If CreateStreamOnHGlobal(o_hMem, 1&, IIStream) = 0& Then
Call OleLoadPicture(ByVal ObjPtr(IIStream), 0&, 0&, aGUID(0), ArrayToPicture)
End If
End If
End If
End Function
Как получить смещение и размер, чтобы перейти к этой функции?
Попробуйте 0 и ubound (yourarray), чтобы рассказать об этом массиве целиком –
Я использовал Offset = LBound (Bytear()) и size = UBound (Bytear()) - LBound (Bytear()) +1 Кажется, чтобы работать, мне интересно, почему образец не просто делает это? Позаботьтесь, чтобы написать свой ответ? –