powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Картинка из памяти
9 сообщений из 9, страница 1 из 1
Картинка из памяти
    #36335772
Фотография Mr.Power
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
имеется загруженый файл картинки(jpg в виде байтового массива или проста текста)
как можно загрузить её в pictureBox?
Может есть способ создания StdPicture из переменной?
...
Рейтинг: 0 / 0
Картинка из памяти
    #36335810
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Mr.Power
> Может есть способ создания StdPicture из переменной?

Есть, поищи статью HOWTO: Capture and Print the Screen, a Form, or Any Window

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Картинка из памяти
    #36335879
Фотография Mr.Power
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
статью нашел
впринципе понятно как
сначала создаётся битмап а потом он конвертируется в stdpic
но всё равно не всё там нету превращения из байтового массива фала в битмап!
Или всётаки есть?
...
Рейтинг: 0 / 0
Картинка из памяти
    #36335900
Фотография Mr.Power
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
из битмап в vbpic

Код: 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.
Private Type PictDesc
    cbSizeofStruct As Long
    picType As Long
    hImage As Long
    xExt As Long
    yExt As Long
End Type

Private Type Guid
    Data1 As Long
    Data2 As Integer
    Data3 As Integer
    Data4( 0  To  7 ) As Byte
End Type

Private Declare Function OleCreatePictureIndirect Lib "olepro32.dll" ( _
      lpPictDesc As PictDesc, _
      riid As Guid, _
      ByVal fPictureOwnsHandle As Long, _
      ipic As IPicture _
    ) As Long

Public Function BitmapToPicture(ByVal hBmp As Long) As IPicture

   If (hBmp =  0 ) Then Exit Function

   Dim NewPic As Picture, tPicConv As PictDesc, IGuid As Guid

   ' Fill PictDesc structure with necessary parts:
   With tPicConv
      .cbSizeofStruct = Len(tPicConv)
      .picType = vbPicTypeBitmap
      .hImage = hBmp
   End With

   ' Fill in IDispatch Interface ID
   With IGuid
      .Data1 = &H20400
      .Data4( 0 ) = &HC0
      .Data4( 7 ) = &H46
   End With

   ' Create a picture object:
   OleCreatePictureIndirect tPicConv, IGuid, True, NewPic
   
   ' Return it:
   Set BitmapToPicture = NewPic

End Function










теперь нада найти как из переменной(текст файла) сделать битмап!
???
...
Рейтинг: 0 / 0
Картинка из памяти
    #36335950
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mr.Power
Код: plaintext
1.
2.
3.
4.
5.
Private Type Guid
    Data1 As Long
    Data2 As Integer
    Data3 As Integer
    Data4( 0  To  7 ) As Byte
End Type

мне помнится, что здесь была ошибка, и какой-то из Integer'ов должен быть Long'ом. Хотя могу ошибатся

Mr.Powerтеперь нада найти как из переменной(текст файла) сделать битмап!
Ну как вариант это можно сделать так:
создать битмап нужных размеров в памяти

получить адрес этого битмапа

скопировать содердимое массива в область битмапа

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Картинка из памяти
    #36335958
Фотография Mr.Power
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скинь ссылочку на инфу
...
Рейтинг: 0 / 0
Картинка из памяти
    #36336029
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Mr.Power
> скинь ссылочку на инфу

например
P.S. Даже проще чем я думал

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Картинка из памяти
    #36336049
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
Option Explicit
'This code sourced from http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=29004&lngWId=1

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, riid As Any, ppvObj As Any) As Long
Private Declare Function CLSIDFromString Lib "ole32" (ByVal lpsz As Any, pclsid As Any) As Long
Private Declare Function GlobalAlloc Lib "kernel32" (ByVal uFlags As Long, ByVal dwBytes As Long) As Long
Private Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSource As Any, ByVal dwLength As Long)

Public Function PictureFromByteStream(b() As Byte) As IPicture
Dim LowerBound As Long
Dim ByteCount As Long
Dim hMem As Long
Dim lpMem As Long
Dim IID_IPicture( 15 )
Dim istm As stdole.IUnknown

On Error GoTo Err_Init
If UBound(b,  1 ) <  0  Then
Exit Function
End If

LowerBound = LBound(b)
ByteCount = (UBound(b) - LowerBound) +  1 
hMem = GlobalAlloc(&H2, ByteCount)
If hMem <>  0  Then
lpMem = GlobalLock(hMem)
If lpMem <>  0  Then
MoveMemory ByVal lpMem, b(LowerBound), ByteCount
Call GlobalUnlock(hMem)
If CreateStreamOnHGlobal(hMem,  1 , istm) =  0  Then
If CLSIDFromString(StrPtr("{7BF80980-BF32-101A-8BBB-00AA00300CAB}"), IID_IPicture( 0 )) =  0  Then
Call OleLoadPicture(ByVal ObjPtr(istm), ByteCount,  0 , IID_IPicture( 0 ), PictureFromByteStream)
End If
End If
End If
End If

Exit Function

Err_Init:
If Err.Number =  9  Then
'Uninitialized array
MsgBox "You must pass a non-empty byte array to this function!"
Else
MsgBox Err.Number & " - " & Err.Description
End If
End Function
...
Рейтинг: 0 / 0
Картинка из памяти
    #36336500
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно далеко не ходить.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Картинка из памяти
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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