Что нового

Как получить Bitmap картинки

Bloodrinker

<Блуждающий...>
Сообщения
228
Репутация
19
Нужно получить BitMap картинки (.bmp, .jpg) Чтобы в дальнейшем пробежаться по ней циклом по ширине и высоте по каждому пикселу, и на основе цвета каджого пиксела создать новый битмап (новую картинку) другого размера.
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Bloodrinker
Это делает функция
Код:
_GDIPlus_BitmapCreateFromFile
 
Автор
B

Bloodrinker

<Блуждающий...>
Сообщения
228
Репутация
19
Ага, но _GDIPlus очень медленно работает, я подумал может можно будет использовать WinApi?
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
WinApi тоже можно. Смотрите WinApiEx или, если используете бету, раздел справки WinApiEx\GDI Reference\BitMap Management
 
Автор
B

Bloodrinker

<Блуждающий...>
Сообщения
228
Репутация
19
Можно, но вот тупо не знаю какие аргументы писать в
Код:
_WinAPI_GetDIBits
int GetDIBits(

HDC hdc,	// handle of device context 
HBITMAP hbmp,	// handle of bitmap 
UINT uStartScan,	// first scan line to set in destination bitmap 
UINT cScanLines,	// number of scan lines to copy 
LPVOID lpvBits,	// address of array for bitmap bits 
LPBITMAPINFO lpbi,	// address of structure with bitmap data 
UINT uUsage // RGB or palette index 
);
Я так понимаю она мне поможет)
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Может быть. Функция такая есть. Смотрите справку
Код:
_WinAPI_GetDIBits

Или поищите примеры использования на форуме
 
Автор
B

Bloodrinker

<Блуждающий...>
Сообщения
228
Репутация
19
Ладно, сейчас в другом проблема, как создать пустой битмап с определенной шириной и высотой? Ну и писать в него пикселы по определенным координатам?
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Bloodrinker
http://autoit-script.ru/index.php?topic=2485.0
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Bloodrinker [?]
пустой битмап с определенной шириной и высотой?

Код:
_GDIPlus_BitmapCreateFromScan0(200,200)


и писать в него пикселы по определенным координатам
Код:
_GDIPlus_BitmapSetPixel



Код:
#include <GDIPlus.au3>
_GDIPlus_Startup()
$hBitmap  = _GDIPlus_BitmapCreateFromScan0 ( 200, 200 )
For $i = 1 To 100
	_GDIPlus_BitmapSetPixel ( $hBitmap, $i, 10, 0xFF0007ff  )
Next
 _GDIPlus_ImageSaveToFile($hBitmap, 'test.png') ;save bitmap to disk
_GDIPlus_Shutdown()
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Bloodrinker,
Код:
#include <GDIP.au3>

Local $iW = 40, $iH = 60, $hBitmap, $aColor[2] = [0xFF0000FF, 0xFFFF0000], $iColor, $sFile = @ScriptDir & '\test.png'

_GDIPlus_Startup()
$hBitmap = _GDIPlus_BitmapCreateFromScan0($iW, $iH)
For $i = 0 To $iH - 1
	$iColor = $aColor[Mod($i, 2)]
	For $j = 0 To $iW - 1
		_GDIPlus_BitmapSetPixel($hBitmap, $j, $i, $iColor)
	Next
Next
_GDIPlus_ImageSaveToFile($hBitmap, $sFile)
_GDIPlus_ImageDispose($hBitmap);inververs забыл это сделать
_GDIPlus_Shutdown()
GDIP UDF - мощное дополнение к GDIPlus.au3
 
Верх