Hallo UEZ,
im englischem Forum habe ich das von dir gesehen: https://www.autoitscript.com/forum/topic/18…llet-of-colors/
Bei mehr als 16 $iColors wird das Bild nicht mehr verfremdet.
Hier dein Script, mit mehr als 16 icolors.
Was muss man einstellen um > 16 icolors zu nutzen.
Habe schon die 256 geändert, bringt aber auch nichts.
C
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Global $sFile = FileOpenDialog("Selecet an image", "", "Images (*.jpg;*.png;*.bmp)")
If @error Then Exit MsgBox(16, "Error", "You must select an image!", 30)
_GDIPlus_Startup()
Global $hImage = _GDIPlus_ImageLoadFromFile($sFile)
Global $iW = _GDIPlus_ImageGetWidth($hImage)
Global $iH = _GDIPlus_ImageGetHeight($hImage)
Global $hGUI = GUICreate("GDI+ v1.1 needed", $iW * 2 + 30, $iH + 20)
GUISetState()
Global $hGraphics1 = _GDIPlus_GraphicsCreateFromHWND($hGUI)
_GDIPlus_GraphicsDrawImageRect($hGraphics1, $hImage, 10, 10, $iW, $iH)
_GDIPlus_GraphicsDispose($hGraphics1)
Global $iColors = 17
Global $tPalette = _GDIPlus_PaletteInitialize(256, $GDIP_PaletteTypeOptimal, $iColors, False, $hImage)
$tPalette.ARGB((1)) = 0xFFD08CB2
$tPalette.ARGB((2)) = 0xFF6CD2E9
$tPalette.ARGB((3)) = 0xFF1FEA9F
$tPalette.ARGB((4)) = 0xFF377D04
$tPalette.ARGB((5)) = 0xFF767A57
$tPalette.ARGB((6)) = 0xFFDDB9CA
$tPalette.ARGB((7)) = 0xFF497242
$tPalette.ARGB((8)) = 0xFFEBDF57
$tPalette.ARGB((9)) = 0xFF1A5A4E
$tPalette.ARGB((10)) = 0xFFEED3C6
$tPalette.ARGB((11)) = 0xFFD43F42
$tPalette.ARGB((12)) = 0xFF06071D
$tPalette.ARGB((13)) = 0xFFAC5DE0
$tPalette.ARGB((14)) = 0xFF08BDA6
$tPalette.ARGB((15)) = 0xFF4B8FD7
$tPalette.ARGB((16)) = 0xFF611D89
$tPalette.ARGB((17)) = 0xFFB21502
_GDIPlus_BitmapConvertFormat($hImage, $GDIP_PXF04INDEXED, $GDIP_DitherTypeSolid, $GDIP_PaletteTypeOptimal, $tPalette)
DllCall($__g_hGDIPDll, "int", "GdipSetImagePalette", "handle", $hImage, "struct*", $tPalette)
Global $hGraphics2 = _GDIPlus_GraphicsCreateFromHWND($hGUI)
_GDIPlus_GraphicsDrawImageRect($hGraphics2, $hImage, $iW + 20, 10, $iW, $iH)
Do
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
_GDIPlus_GraphicsDispose($hGraphics1)
_GDIPlus_GraphicsDispose($hGraphics2)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()
GUIDelete()
Exit
EndSwitch
Until False
Alles anzeigen