1

Тема: Нужна помощь с ImageSearch

Открыл для себя новые возможности, сижу изучаю.

Нужна помощь с несколькими вопросами.
1) Imagesearch сохраняет верхние левые координаты найденного изображения. Можно ли как-то сместить их от края к центру ? У меня в игре он за край тянет, хотелось бы чтобы он как человек брал за центр.
2) Можно ли как-то изображения всунуть внутрь скомпилированого скрипта ? Чтобы они не рядом с скриптом были, а внутри ?

2

Re: Нужна помощь с ImageSearch

topk1s
1) Если есть данные о размере - просто вычислить середину, не вижу проблемы.
2) FileInstall http://www.script-coding.com/AutoHotkey/Scripts.html

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

3

Re: Нужна помощь с ImageSearch

__Михаил__ пишет:

topk1s
1) Если есть данные о размере - просто вычислить середину, не вижу проблемы.
2) FileInstall http://www.script-coding.com/AutoHotkey/Scripts.html

Можете с первым помочь ? Не могу додуматься как это сделать.

4 (изменено: __Михаил__, 2020-06-24 22:22:11)

Re: Нужна помощь с ImageSearch

topk1s

Вот пример получения информации о разрешении картинки, затем делим переменные на 2.

Обязательно для использования наличие GdiPlus.dll.

Path := "C:\0.jpg"	; Путь к картинке (в кавычках)
Return


F2::
; Получить в переменную Info информацию в виде словаря W и H
Info := Img_Size(Path)	

; Отобразить содержимое словаря: Info.W и Info.H
ToolTip, % "Ширина: " . Info.W . "`nВысота: " . Info.H
Return



;Возвращает w,h картинки, принимает путь к файлу (в кавычках)	[Malcev]
;http://forum.script-coding.com/viewtopic.php?id=13846
Img_Size(File)
{
 pToken := Gdip_StartUp()
 pBitmap := Gdip_CreateBitmapFromFile(File)
; pBitmap := Gdip_CreateBitmapFromFile("c:\myImage.jpg")
 Gdip_GetImageDimensions(pBitmap, w, h)
 Gdip_DisposeImage(pBitmap)
 Gdip_ShutDown(pToken)
; MsgBox, % "Width: " w " Height: " h
 Return { W: W, H: H }
}
Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

5

Re: Нужна помощь с ImageSearch

Пара вариантов попроще:

filePath := "D:\Images\MyPicture.jpg"
if size := GetImageSize(filePath)
   MsgBox, % size.W . "`n" size.H

GetImageSize(imageFilePath) {
   if !hBitmap := LoadPicture(imageFilePath, "GDI+") {
      MsgBox, Failed to load the image
      Return
   }
   VarSetCapacity(BITMAP, size := 4*4 + A_PtrSize*2, 0)
   DllCall("GetObject", "Ptr", hBitmap, "Int", size, "Ptr", &BITMAP)
   DllCall("DeleteObject", "Ptr", hBitmap)
   Return { W: NumGet(BITMAP, 4, "UInt"), H: NumGet(BITMAP, 8, "UInt") }
}
filePath := "D:\Images\MyPicture.jpg"
oSize := GetImageSize(filePath)
MsgBox, % oSize.W . "`n" oSize.H
ExitApp

GetImageSize(imageFilePath)  {
   Gui, New
   Gui, Add, Pic,, % imageFilePath
   GuiControlGet, Pic, Pos, Static1
   Gui, Destroy
   Return { W: PicW, H: PicH }
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

6

Re: Нужна помощь с ImageSearch

teadrinker  отныне, Вы - мой личный Иисус Христос!