1 (изменено: Vicoriyan, 2017-09-27 21:56:38)

Тема: AHK: Обрезка картинки или скриншота Gdip_CropImage

Задавался вопросом обрезки картинки или скриншота. На форуме темы на подобный вопрос я не находил и пришлось гуглить, расспрашивать и экспериментировать. Malcev мне помогал, направлял на путь истенный, за что ему огромное спасибо. Вот хочу показать продукты моих поисков, чтений и экспериментов.

Скрипт обрезки картинки:

1::
pToken := Gdip_Startup()
pBitmap := Gdip_CreateBitmapFromFile("test.png")
Gdip_GetDimensions(pBitmap, w, h)
pBitmap2 := Gdip_CropImage(pBitmap, 50, 50, w-100, h-100)
Gdip_SaveBitmapToFile(pBitmap2, "out.png")
Gdip_CropImage(pBitmap, x, y, w, h)
{
   pBitmap2 := Gdip_CreateBitmap(w, h), G2 := Gdip_GraphicsFromImage(pBitmap2)
   Gdip_DrawImage(G2, pBitmap, 0, 0, w, h, x, y, w, h)
   Gdip_DeleteGraphics(G2)
   return pBitmap2
}
Gdip_DisposeImage(pBitmap), Gdip_DisposeImage(pBitmap2)
Gdip_Shutdown(pToken)
return

Скрипт снимка скриншота активного или неактивного окна и его обрезка:

1::
hwnd := WinExist("A")
pToken := Gdip_Startup()
bmpHaystack := Gdip_BitmapFromHWND(hwnd)
Gdip_GetDimensions(bmpHaystack, w, h)
bmpHaystack2 := Gdip_CropImage(bmpHaystack, 50, 50, w-100, h-100)
Gdip_SaveBitmapToFile(bmpHaystack2, "out.png")
Gdip_CropImage(bmpHaystack, x, y, w, h)
{
   bmpHaystack2 := Gdip_CreateBitmap(w, h), G2 := Gdip_GraphicsFromImage(bmpHaystack2)
   Gdip_DrawImage(G2, bmpHaystack, 0, 0, w, h, x, y, w, h)
   Gdip_DeleteGraphics(G2)
   return bmpHaystack2
}
Gdip_DisposeImage(bmpHaystack), Gdip_DisposeImage(bmpHaystack2)
Gdip_Shutdown(pToken)
return

Оба скрипта рабочие и требуют Gdip

Может у кого есть другие решения, может кто-то нашел ошибки - говорите, буду учится я и все. кому данная тема интересна.

2 (изменено: Vicoriyan, 2017-10-20 18:47:33)

Re: AHK: Обрезка картинки или скриншота Gdip_CropImage

Доброго времени суток.
Хочу задать вопрос, можно ли координаты обрезки назначать переменными?

bmpHaystack2 := Gdip_CropImage(bmpHaystack, 50, 50, w-100, h-100)

На примере x и y равен 50, но четко прописано по 50. А как можно сделать, чтоб эти значения присваивались переменными? Пробовал делать по старинке:

bmpHaystack2 := Gdip_CropImage(bmpHaystack, %varx%, %vary%, w, h)

Не получается. скрипт ничего не обрезает, а присваивает нулевые значения.

3

Re: AHK: Обрезка картинки или скриншота Gdip_CropImage

Попробуйте без знаков процента, может по-ч0тче будет.

4

Re: AHK: Обрезка картинки или скриншота Gdip_CropImage

ypppu Все чЕтко. Спасибо