Viktor1703
AutoIT Гуру
- Сообщения
- 1,535
- Репутация
- 413
Написал код для разбиения картинки на пиксельную матрицу, применить данный пример практически негде, сегодня мне понадобилось сделать такую конструкцию и я решил выложить его здесь, буду рад советам по упрощению и оптимизации кода.
Для работы необходима библиотека GDIP UDF
Код:
#include <GDIP.au3>
#include <GDIPlus.au3>
#include <Array.au3>
$Matrix = MatrixGetColor(@ScriptDir & '\Image1.png')
_ArrayDisplay($Matrix)
Func MatrixGetColor($sImage)
Local $hImage, $iWidth, $iHeight, $iBitmap, $hBitmap
_GDIPlus_Startup()
$hImage = _GDIPlus_ImageLoadFromFile($sImage)
$iWidth = _GDIPlus_ImageGetWidth($hImage)
$iHeight = _GDIPlus_ImageGetHeight($hImage)
$iBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
$hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($iBitmap)
Dim $iMatrix[$iHeight][$iWidth]
For $H = 0 To $iHeight - 1
For $W = 0 To $iWidth - 1
$iMatrix[$H][$W] = '0x' & Hex(_GDIPlus_BitmapGetPixel($hBitmap, $W, $H), 6)
Next
Next
_GDIPlus_ImageDispose($hImage)
_WinAPI_DeleteObject($iBitmap)
_WinAPI_DeleteObject($hBitmap)
_GDIPlus_Shutdown()
Return $iMatrix
EndFunc
Для работы необходима библиотека GDIP UDF