Das wäre die schnelle, aber komplizierte Variante (ungetestet, und nur schnell in Scite getippt. Sollte aber funktionieren):
Spoiler anzeigen
#include <GDIPlus.au3>
#include <Array.au3>
_GDIPlus_Startup()
$hBitmap = _GDIPlus_BitmapCreateFromFile(...)
$iWidth = _GDIPlus_ImageGetWidth($hBitmap)
$iHeight = _GDIPlus_ImageGetHeight($hBitmap)
$tLockBits = _GDIPlus_BitmapLockBits($hBitmap, 0, 0, $iWidth, $iHeight, BitOR($GDIP_ILMREAD, $GDIP_ILMWRITE))
$tPixelData = DllStructCreate('dword['&$iWidth * $iHeight &']', DllStructGetData($tLockBits, 'Scan0'))
Dim $aArray[$iWidth][$iHeight]
For $iX = 0 To $iWidth -1
For $iY = 0 To $iHeight - 1
$iIndex = $iX + ($iY * $iWidth) + 1
If DllStructGetData($tPixelData, 1, $iIndex) = 0x000000 Then
$aArray[$iX][$iY] = 1
Else
$aArray[$iX][$iY] = 0
EndIf
Next
Next
_GDIPlus_BitmapUnlockBits($hBitmap, $tLockBits)
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_Shutdown()
_ArrayDisplay($aArray)
[/autoit]Etwas einfacher, aber auch langsamer:
Spoiler anzeigen
#include <GDIPlus.au3>
#include <Array.au3>
_GDIPlus_Startup()
$hBitmap = _GDIPlus_BitmapCreateFromFile(...)
$iWidth = _GDIPlus_ImageGetWidth($hBitmap)
$iHeight = _GDIPlus_ImageGetHeight($hBitmap)
Dim $aArray[$iWidth][$iHeight]
For $iX = 0 To $iWidth -1
For $iY = 0 To $iHeight - 1
If _GDIPlus_BitmapGetPixel($hBitmap, $iX, $iY) = 0x000000 Then
$aArray[$iX][$iY] = 1
Else
$aArray[$iX][$iY] = 0
EndIf
Next
Next
_GDIPlus_BitmapUnlockBits($hBitmap, $tLockBits)
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_Shutdown()
_ArrayDisplay($aArray)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func _GDIPlus_BitmapGetPixel($hBitmap, $iX, $iY) ; From GDIP.au3
Local $aResult = DllCall($ghGDIPDll, "uint", "GdipBitmapGetPixel", "hwnd", $hBitmap, "int", $iX, "int", $iY, "uint*", 0)
If @error Then Return SetError(@error, @extended, 0)
$GDIP_STATUS = $aResult[0]
Return $aResult[4]
EndFunc ;==>_GDIPlus_BitmapGetPixel