Code: Alles auswählen
UseJPEGImageEncoder()
Procedure SaveImageToMemory(Image, *MemSize, Format = #PB_ImagePlugin_JPEG, Compression = 9)
Protected *Mem, MemSize, ImageDataPipe, PipeName$, RealMemSize
PipeName$ = "\\.\pipe\ImageDataPipe_" + Str(GetCurrentThreadId_()) ; <- Threadsicher
MemSize = ImageDepth(Image)*ImageHeight(Image)*ImageWidth(Image)
*Mem = AllocateMemory(MemSize)
ImageDataPipe = CreateNamedPipe_(PipeName$, #PIPE_ACCESS_INBOUND | #FILE_FLAG_OVERLAPPED, #PIPE_TYPE_BYTE | #PIPE_READMODE_BYTE | #PIPE_NOWAIT, 1, MemSize, MemSize, #NMPWAIT_USE_DEFAULT_WAIT, #Null)
SaveImage(Image, PipeName$, Format, Compression)
ReadFile_(ImageDataPipe, *Mem, MemSize, *MemSize, #Null)
CloseHandle_(ImageDataPipe)
ProcedureReturn *Mem
EndProcedure
Define Image, MemSize, *ImageMemory
; Image erstellen
Image = CreateImage(#PB_Any, 1024, 768, 32)
; Image in Speicher sichern
*ImageMemory = SaveImageToMemory(Image, @MemSize)
; Größe des Speichers
Debug MemSize