Hallo Com,
für ein kleines Spiele-/Quizprojekt möchte ich Landkarten bis auf eine Stadt auf Volltransparent setzen, ausserdem benötige ich noch ein Array welches die Bildkoordinaten der Stadt enthält. Hier mein Ansatz:
Spoiler anzeigen
#include <GDIPlus.au3>
#include <GDIP.au3>
#include <Array.au3>
_GDIPlus_Startup()
$hBitmap = _GDIPlus_BitmapCreateFromFile('D:\Programme\AutoIt3\MyDemos\HeimatkundeQuiz\Karten\Berlin2.png')
$iWidth = _GDIPlus_ImageGetWidth($hBitmap)
$iHeight = _GDIPlus_ImageGetHeight($hBitmap)
Dim $aArray[$iWidth][$iHeight]
For $iX = 0 To $iWidth -1
For $iY = 0 To $iHeight - 1
$sHex=Hex(_GDIPlus_BitmapGetPixel($hBitmap, $iX, $iY))
ConsoleWrite($iX&'/'&$iY&': '&$sHex&@CRLF)
If $sHex='FFC11E1E' Then
$aArray[$iX][$iY]=1
Else
$aArray[$iX][$iY]=0
_GDIPlus_BitmapSetPixel($hBitmap, $iX, $iY,0xFFFFFFFF)
EndIf
Next
Next
_GDIPlus_ImageSaveToFile($hBitmap,'D:\Programme\AutoIt3\MyDemos\HeimatkundeQuiz\Karten\Berlin.png')
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_Shutdown()
_ArrayDisplay($aArray)
[/autoit]Obwohl mir die Konsolenausgabe den gesuchten Wert:
ausgibt schlägt die nachfolgende Prüfung (Zeile 14) schief, dadurch ist naürlich auch das geänderte Bild für den Mülleimer. Ich benutze AutoIt 3.6.6.1 auf Win XP SP3.
Edit: Lösung
Spoiler anzeigen
#include <GDIPlus.au3>
#include <GDIP.au3>
#include <Array.au3>
_GDIPlus_Startup()
;ConsoleWrite(Dec('C11E1E')&@CRLF)
;Exit
$hBitmap = _GDIPlus_BitmapCreateFromFile('D:\Programme\AutoIt3\MyDemos\HeimatkundeQuiz\Karten\Berlin2.png')
$iWidth = _GDIPlus_ImageGetWidth($hBitmap)
$iHeight = _GDIPlus_ImageGetHeight($hBitmap)
Dim $aArray[$iWidth][$iHeight]
For $iX = 0 To $iWidth -1
For $iY = 0 To $iHeight - 1
$sHex= Hex(_GDIPlus_BitmapGetPixel($hBitmap, $iX, $iY),6)
$iColor=Dec($sHex)
;ConsoleWrite($iX&'/'&$iY&': '&$iColor&@CRLF)
If $iColor = 12656158 Then
$aArray[$iX][$iY]=$iColor
Else
$aArray[$iX][$iY]=0
_GDIPlus_BitmapSetPixel($hBitmap, $iX, $iY,0xFF)
EndIf
Next
Next
_GDIPlus_ImageSaveToFile($hBitmap,'D:\Programme\AutoIt3\MyDemos\HeimatkundeQuiz\Karten\Berlin.png')
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_Shutdown()
_ArrayDisplay($aArray)
[/autoit]mfg autoBert