#include <GDIPlus.au3>
#Include <WinAPIEx.au3>
Local $hImage, $hHBitmap, $iW, $iH, $tBits, $pBits, $hBitmap
_GDIPlus_Startup()
$hImage = _GDIPlus_ImageLoadFromFile(@ScriptDir & '\1.gif')
$iW = _GDIPlus_ImageGetWidth($hImage)
$iH = _GDIPlus_ImageGetHeight($hImage)
$hHBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
_GDIPlus_ImageDispose($hImage)
$tBits = DllStructCreate('byte[' & (4 * $iW * $iH) & ']')
$pBits = DllStructGetPtr($tBits)
_WinAPI_GetBitmapBits($hHBitmap, DllStructGetSize($tBits), $pBits)
_WinAPI_DeleteObject($hHBitmap)
$hBitmap = _GDIPlus_BitmapCreateFromScan0($iW, $iH, 4 * $iW, $GDIP_PXF32ARGB, $pBits)
_GDIPlus_ImageSaveToFile($hBitmap, @ScriptDir & '\1.png')
_GDIPlus_ImageDispose($hBitmap)
_GDIPlus_Shutdown()
Func _GDIPlus_BitmapCreateFromScan0($iWidth, $iHeight, $iStride = 0, $iPixelFormat = 0x0026200A, $pScan0 = 0)
Local $aResult = DllCall($ghGDIPDll, 'uint', 'GdipCreateBitmapFromScan0', 'int', $iWidth, 'int', $iHeight, 'int', $iStride, 'int', $iPixelFormat, 'ptr', $pScan0, 'ptr*', 0)
If @error Then
Return SetError(1, 0, 0)
Else
If $aResult[0] Then
Return SetError($aResult[0], 0, 0)
EndIf
EndIf
Return $aResult[6]
EndFunc ;==>_GDIPlus_BitmapCreateFromScan0