Snippet for Saving Multipage TIF with GDI+
Posted: Fri Oct 30, 2009 7:14 pm
This uses PB images for the files. Just a snippet on how to save multiple pages to a TIF.
Code: Select all
input\GdiPlusVersion = 1
GdiplusStartup(@token, @input, #Null)
If token
;
GdipGetImageEncodersSize(@Number, @Size)
*Memory = AllocateMemory(Size)
*pImageCodecInfo = *Memory
GdipGetImageEncoders(Number, Size, *pImageCodecInfo)
For i = 1 To Number
If "image/tiff" = PeekS(*pImageCodecInfo\MimeType, -1, #PB_Unicode)
;
EncoderParameters\Count = 1
; EncoderParameters\Parameter[0]\Guid = ?EncoderSaveFlag
CopyMemory(?EncoderSaveFlag, @EncoderParameters\Parameter[0]\Guid, SizeOf(GUID))
EncoderParameters\Parameter[0]\type = 4
EncoderParameters\Parameter[0]\NumberOfValues = 1
EncoderParameters\Parameter[0]\Value = @ParameterValue
;
ParameterValue = 18 ; EncoderValueMultiFrame
GdipCreateBitmapFromHBITMAP(ImageID(0), 0, @gdipPlusImage)
lResult = GdipSaveImageToFile(gdipPlusImage, "c:\temp\z2.tif", *pImageCodecInfo\clsid, EncoderParameters)
Debug lResult
;
ParameterValue = 23 ; EncoderValueFrameDimensionPage
lResult = GdipCreateBitmapFromHBITMAP(ImageID(0), 0, @gdipPlusImage02)
lResult = GdipSaveAddImage(gdipPlusImage, gdipPlusImage02, EncoderParameters)
Debug lResult
;
ParameterValue = 20 ; EncoderValueFlush
lResult = GdipSaveAdd(gdipPlusImage, EncoderParameters)
Debug lResult
;
GdipDisposeImage(gdipPlusImage)
GdipDisposeImage(gdipPlusImage02)
;
Break
;
EndIf
*pImageCodecInfo + SizeOf(ImageCodecInfo)
Next i
FreeMemory(*Memory)
;
GdiplusShutdown(token)
EndIf