| 1 | #AutoIt3Wrapper_au3check_parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 |
|---|
| 2 | #include <GDIPlus.au3> |
|---|
| 3 | |
|---|
| 4 | Opt('MustDeclareVars', 1) |
|---|
| 5 | |
|---|
| 6 | _MakeMyMultiPageTif(@MyDocumentsDir & "\GDIPlus_MultiPage.tif") |
|---|
| 7 | |
|---|
| 8 | Func _MakeMyMultiPageTif($sOutFile) |
|---|
| 9 | Local $sPath = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt", "InstallDir") & "\Examples\GUI\Advanced\Images" |
|---|
| 10 | Local $sCLSID, $tData, $tParams, $hImage1, $hImage2, $hImage3 |
|---|
| 11 | |
|---|
| 12 | _GDIPlus_Startup() |
|---|
| 13 | |
|---|
| 14 | $sCLSID = _GDIPlus_EncodersGetCLSID ("TIF") |
|---|
| 15 | |
|---|
| 16 | ; Create the Const Encoder Value Type struct |
|---|
| 17 | $tData = DllStructCreate("int Data") |
|---|
| 18 | |
|---|
| 19 | ; Put the Const Encoder Value Type into the struct |
|---|
| 20 | DllStructSetData($tData, "Data", $GDIP_EVTMULTIFRAME) |
|---|
| 21 | |
|---|
| 22 | ;Initiate the Encoder Parameters |
|---|
| 23 | $tParams = _GDIPlus_ParamInit (1) |
|---|
| 24 | _GDIPlus_ParamAdd ($tParams, $GDIP_EPGSAVEFLAG, 1, $GDIP_EPTLONG, DllStructGetPtr($tData, "Data")) |
|---|
| 25 | |
|---|
| 26 | ; Load 3 images that will be put into the tif file, the images can be different formats and sizes. |
|---|
| 27 | $hImage1 = _GDIPlus_ImageLoadFromFile($sPath & "\Red.bmp") |
|---|
| 28 | $hImage2 = _GDIPlus_ImageLoadFromFile($sPath & "\Green.bmp") |
|---|
| 29 | $hImage3 = _GDIPlus_ImageLoadFromFile($sPath & "\Blue.bmp") |
|---|
| 30 | |
|---|
| 31 | ; Save the first loaded image passing on the Encoder Parameters |
|---|
| 32 | _GDIPlus_ImageSaveToFileEx($hImage1, $sOutFile, $sCLSID, DllStructGetPtr($tParams)) |
|---|
| 33 | |
|---|
| 34 | ; Now we have saved the first image into the tif we can set the Encoder Value Type again to add the next frames |
|---|
| 35 | DllStructSetData($tData, "Data", $GDIP_EVTFRAMEDIMENSIONPAGE) |
|---|
| 36 | $tParams = _GDIPlus_ParamInit (1) |
|---|
| 37 | _GDIPlus_ParamAdd ($tParams, $GDIP_EPGSAVEFLAG, 1, $GDIP_EPTLONG, DllStructGetPtr($tData, "Data")) |
|---|
| 38 | |
|---|
| 39 | ; Now we add the 2nd frame |
|---|
| 40 | _GDIPlus_ImageSaveAddImage($hImage1, $hImage2, DllStructGetPtr($tParams)) |
|---|
| 41 | |
|---|
| 42 | ; Now we add the 3rd frame |
|---|
| 43 | _GDIPlus_ImageSaveAddImage($hImage1, $hImage3, DllStructGetPtr($tParams)) |
|---|
| 44 | |
|---|
| 45 | ; My images are now added to the tif file I want to set the Encoder Value Type again to flush and finalise |
|---|
| 46 | DllStructSetData($tData, "Data", $GDIP_EVTFLUSH) |
|---|
| 47 | $tParams = _GDIPlus_ParamInit (1) |
|---|
| 48 | _GDIPlus_ParamAdd ($tParams, $GDIP_EPGSAVEFLAG, 1, $GDIP_EPTLONG, DllStructGetPtr($tData, "Data")) |
|---|
| 49 | |
|---|
| 50 | ; Now the final step to flush the encoder and finalize the image |
|---|
| 51 | _GDIPlus_ImageSaveAdd($hImage1, DllStructGetPtr($tParams)) |
|---|
| 52 | |
|---|
| 53 | ; Tidy up the 3 images we loaded and shutdown. |
|---|
| 54 | _GDIPlus_ImageDispose($hImage1) |
|---|
| 55 | _GDIPlus_ImageDispose($hImage2) |
|---|
| 56 | _GDIPlus_ImageDispose($hImage3) |
|---|
| 57 | _GDIPlus_Shutdown() |
|---|
| 58 | EndFunc |
|---|
| 59 | |
|---|
| 60 | ; #FUNCTION# ==================================================================================================================== |
|---|
| 61 | ; Name...........: _GDIPlus_ImageSaveAddImage |
|---|
| 62 | ; Description ...: Adds a frame to a file or stream specified in a previous call to the _GDIPlus_ImageSaveToFileEx. |
|---|
| 63 | ; Syntax.........: _GDIPlus_ImageSaveAddImage($hImage, $hImageNew, $pParams) |
|---|
| 64 | ; Parameters ....: $hImage - Handle to an image object |
|---|
| 65 | ; $hImageNew - Handle to the new image object to add |
|---|
| 66 | ; $pParams - Pointer to a $tagGDIPPENCODERPARAMS structure |
|---|
| 67 | ; Return values .: Success - True |
|---|
| 68 | ; Failure - False |
|---|
| 69 | ; Author ........: Smashly |
|---|
| 70 | ; Modified.......: |
|---|
| 71 | ; Remarks .......: |
|---|
| 72 | ; Related .......: _GDIPlus_ImageLoadFromFile, _GDIPlus_ImageSaveToFileEx, _GDIPlus_ImageSaveAdd, $tagGDIPPENCODERPARAMS |
|---|
| 73 | ; Link ..........; @@MsdnLink@@ GdipSaveAddImage |
|---|
| 74 | ; Example .......; Yes |
|---|
| 75 | ; =============================================================================================================================== |
|---|
| 76 | Func _GDIPlus_ImageSaveAddImage($hImage, $hImageNew, $pParams) |
|---|
| 77 | Local $aResult |
|---|
| 78 | |
|---|
| 79 | $aResult = DllCall($ghGDIPDll, "int", "GdipSaveAddImage", "hwnd", $hImage, "hwnd", $hImageNew, "ptr", $pParams) |
|---|
| 80 | If @error Then Return SetError(@error, @extended, False) |
|---|
| 81 | Return SetError($aResult[0], 0, $aResult[0] = 0) |
|---|
| 82 | EndFunc |
|---|
| 83 | |
|---|
| 84 | ; #FUNCTION# ==================================================================================================================== |
|---|
| 85 | ; Name...........: _GDIPlus_ImageSaveAdd |
|---|
| 86 | ; Description ...: Save selected frames from a multiple-frame image to another multiple-frame image. |
|---|
| 87 | ; Syntax.........: _GDIPlus_ImageSaveAdd($hImage, $pParams) |
|---|
| 88 | ; Parameters ....: $hImage - Handle to an image object |
|---|
| 89 | ; $pParams - Pointer to a $tagGDIPPENCODERPARAMS structure |
|---|
| 90 | ; Return values .: Success - True |
|---|
| 91 | ; Failure - False |
|---|
| 92 | ; Author ........: Smashly |
|---|
| 93 | ; Modified.......: |
|---|
| 94 | ; Remarks .......: |
|---|
| 95 | ; Related .......: _GDIPlus_ImageLoadFromFile, _GDIPlus_ImageSaveToFileEx, _GDIPlus_ImageSaveAddImage, $tagGDIPPENCODERPARAMS |
|---|
| 96 | ; Link ..........; @@MsdnLink@@ GdipSaveAdd |
|---|
| 97 | ; Example .......; Yes |
|---|
| 98 | ; =============================================================================================================================== |
|---|
| 99 | Func _GDIPlus_ImageSaveAdd($hImage, $pParams) |
|---|
| 100 | Local $aResult |
|---|
| 101 | |
|---|
| 102 | $aResult = DllCall($ghGDIPDll, "int", "GdipSaveAdd", "hwnd", $hImage, "ptr", $pParams) |
|---|
| 103 | If @error Then Return SetError(@error, @extended, False) |
|---|
| 104 | Return SetError($aResult[0], 0, $aResult[0] = 0) |
|---|
| 105 | EndFunc |
|---|