#include <GDIPlus.au3>
_GDIPlus_Startup()
Global $aValue[1024]
For $i = 0 To 1023
$aValue[$i] = Random(0, 0xFFFFFF, 1)
Next
Global $iWidth = 32, $iHeight = 32
$tStruct = DllStructCreate("int color [" & $iWidth * $iHeight & "]")
For $i = 0 To UBound($aValue) - 1
DllStructSetData($tStruct, "color", $aValue[$i], $i + 1)
Next
$hImage = _GDIPlus_BitmapCreateFromScan0($iWidth, $iHeight, $GDIP_PXF32ARGB, $iWidth * 4, DllStructGetPtr($tStruct, "color"))
_GDIPlus_ImageSaveToFile($hImage, "pic.bmp")
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()
#include <GDIPlus.au3>
_GDIPlus_Startup()
; Задать размер картинки.
Global $iWidth = 32, $iHeight = 32
; Массив содержащий данные картинки, заполненный случайным образом.
Global $aPic[$iWidth * $iHeight]
For $i = 0 To UBound($aPic) - 1
$aPic[$i] = Random(0, 0xFFFFFF, 1)
Next
; Создать структуру UINT(4 байта) с именем PIC размером высота * ширина картинки.
$tStruct = DllStructCreate("uint PIC[" & $iWidth * $iHeight & "]")
For $i = 0 To UBound($aPic) - 1
DllStructSetData($tStruct, "PIC", $aPic[$i], $i + 1)
Next
; Создать картинку из структуры.
$hBitmap = _GDIPlus_BitmapCreateFromScan0($iWidth, $iHeight, $GDIP_PXF32ARGB, $iWidth * 4, DllStructGetPtr($tStruct, "PIC"))
; Сохранить в файл.
_GDIPlus_ImageSaveToFile($hBitmap, "pic.bmp")
; Удалить ресурсы GDI+.
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_Shutdown()
#include <GDIPlus.au3>
_GDIPlus_Startup()
; Задать размер картинки.
Global $iWidth = 32, $iHeight = 32
; Массив содержащий данные картинки, заполненный случайным образом.
Global $aPic[$iWidth * $iHeight]
For $i = 0 To UBound($aPic) - 1
$aPic[$i] = Random(0, 0xFFFFFF, 1)
Next
; Создать структуру UINT(4 байта) с именем PIC размером высота * ширина картинки.
$tStruct = DllStructCreate("uint PIC[" & $iWidth * $iHeight & "]")
For $i = 0 To UBound($aPic) - 1
DllStructSetData($tStruct, "PIC", $aPic[$i], $i + 1)
Next
; Создать картинку из структуры.
$hBitmap = _GDIPlus_BitmapCreateFromScan0($iWidth, $iHeight, $GDIP_PXF32ARGB, $iWidth * 4, DllStructGetPtr($tStruct, "PIC"))
Local $hBitmap_Scaled = _GDIPlus_ImageResize($hBitmap, 320, 320) ;resize image
; Сохранить в файл.
_GDIPlus_ImageSaveToFile($hBitmap_Scaled, "pic.bmp")
; Удалить ресурсы GDI+.
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_Shutdown()
С картинкой всё в порядке. Просто у неё все пиксели прозрачные. Чтобы увидеть цвета заполните массив вот такЧто не так с созданной картинкой?
$aPic[$i] = BitOR(0xFF000000, Random(0, 0xFFFFFF, 1))
С точки зрения AutoIt объекты Image и Bitmap идентичны. Фактически, в терминологии AutoIt, это не объекты, а указатели на область памяти. Поэтому можно использовать любую функцию. Приведение типов GDI+ реализует самостоятельно.Не знаю, на сколько это актуально, но заменил
Лайк от тепловизора))) за помощь!С картинкой всё в порядке. Просто у неё все пиксели прозрачные. Чтобы увидеть цвета заполните массив вот так
Потому что сохраняется в bmp. Если сохранить в png и открыть в программе с поддержкой прозрачности, то вы увидите только фон программы.почему прозрачная картинка отображается при создании
Функция _GDIPlus_ImageResize не входит в gdiplus.dll, она написана для удобства. Если посмотреть реализацию этой функции, то можно увидеть, что используется копирование оригинальной картинки на grapics, связанный с новым bitmap. Новый bitmap по умолчанию имеет чёрный фон. При копировании прозрачного цвета на чёрный фон результирующий цвет будет чёрным независимо от наличия данных в RGB составляющих. Поэтому новая картинка получается чёрной.после растягивания уже не отображается