<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Поиск из нескольких изображений и "запоминание" данных.]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=14551&amp;type=atom" />
	<updated>2019-02-15T10:34:17Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=14551</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Поиск из нескольких изображений и "запоминание" данных.]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=132184#p132184" />
			<content type="html"><![CDATA[<p>Я не очень силен в ahk. Потому не претендую что этот способ является оптимальным, но именно так я решил свою задачу по сохранению изображения в файл.<br />Где-то выдернул этот код, есть масса примеров если поискать.<br /></p><div class="codebox"><pre><code>
#include gdip.ahk
.
.
Screenshot(outfile, screen)
{
	pToken := Gdip_Startup()
	pBitmap := Gdip_BitmapFromScreen(screen)
	Gdip_SaveBitmapToFile(pBitmap, outfile, 100)
	Gdip_DisposeImage(pBitmap)
	Gdip_Shutdown(pToken)
}

; Вызов 
str= %xx%|%yy%|50|10    ; xx,yy  - левый верхний угол .   дальше размеры картинки в пикселях для примера.
 Screenshot(name_file &quot;.png&quot;, str)     ; тут можно динамически подставлять имя файла или просто задать, что бы был один и тот же.

</code></pre></div><p>скачать gdip.ahk -&nbsp; для работы с графикой он по любому пригодится.</p>]]></content>
			<author>
				<name><![CDATA[lngvar]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=31494</uri>
			</author>
			<updated>2019-02-15T10:34:17Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=132184#p132184</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Поиск из нескольких изображений и "запоминание" данных.]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=132073#p132073" />
			<content type="html"><![CDATA[<p><strong>lngvar</strong><br />Спасибо. Этот вопрос в общем то решил. И да, 125 много, оставлял на время теста, хватает 20.<br />Теперь столкнулся с проблемкой, что вручную резать картинки крайне лень, а придумать скрипт который сам это делает по координатам что то не могу. На форуме вроде натыкался один раз, а сейчас найти не могу(</p>]]></content>
			<author>
				<name><![CDATA[Bromka]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=39929</uri>
			</author>
			<updated>2019-02-09T04:16:15Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=132073#p132073</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Поиск из нескольких изображений и "запоминание" данных.]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=132013#p132013" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>
loop	
{
img:=&quot;img&quot;. A_Index . &quot;.tif&quot;
ImageSearch, FoundX, FoundY, HolderCellHeightMin, HolderCellWidthMin, HolderCellHeightMax, HolderCellWidthMax, *125 %img%
}
</code></pre></div><p>как то так<br />делаешь картинки с изменяющейся в названии последней цифры.</p><p>Ты уверен что тебе нужна вариация *125 ? Это очень много. Это в десятки раз замедляет поиск.<br />Подбери методом проб и ошибок минимальное значение. И ты удивишься насколько быстрым окажется поиск.<br />Я не уверен, но мне кажется, что было бы разумнее искать картинки в bmp или png.</p>]]></content>
			<author>
				<name><![CDATA[lngvar]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=31494</uri>
			</author>
			<updated>2019-02-07T22:00:12Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=132013#p132013</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Поиск из нескольких изображений и "запоминание" данных.]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=131958#p131958" />
			<content type="html"><![CDATA[<p>Вопрос, вероятно, банальный, но в поиске не нашел.<br />Нужно проверить таблицу 12*5 ячеек, и в случае совпадения с одним из изображений (их порядка 30 разных) совершить действие. Так же нужно ассоциировать нахождение с каким-либо параметром (условно в результате должно получится, что при нахождение нужных изображений происходит клик мыши, а в итоге выводится таблица - найдено 4 совпадений X, 5 Y и 3 Z. <br />Сейчас скрипт на этом этапе </p><div class="codebox"><pre><code>
^2::
HolderCellHeightMin := 1272 ;начальная точка по горизонтали
HolderCellHeightMax := HolderCellHeightMin + 52.5 ;конечная точка по горизонтали
CurrencyCell := 0 ;количество нахождений
Loop, 12 ;цикл на 12 ячеек по горизонтали
{    
HolderCellWidthMin  := 588 ;начальная точка по вертикали
HolderCellWidthMax  := HolderCellWidthMin + 52.5 ;конечная точка по вертикали
    
    ImageSearch, FoundX, FoundY, HolderCellHeightMin, HolderCellWidthMin, HolderCellHeightMax, HolderCellWidthMax, *75 chaos.tif ;ищем в ячейке 52*52 картинку, координаты даются при нахождении
    /*  
    if Errorlevel = 0
    {
        CurrencyCell := CurrencyCell + 1 
        MsgBox %CurrencyCell%, %HolderCellHeightMax%   
    } 
    */
    Loop, 5
     {
  ImageSearch, FoundX, FoundY, HolderCellHeightMin, HolderCellWidthMin, HolderCellHeightMax, HolderCellWidthMax, *125 chaos.tif
  if Errorlevel = 0 
      {
      CurrencyCell := CurrencyCell + 1
 ;     MsgBox координаты ячейки по вертикали %HolderCellWidthMin%, %HolderCellWidthMax%
      }
    HolderCellWidthMin := HolderCellWidthMin + 52.5
    HolderCellWidthMax := HolderCellWidthMax + 52.5
    }

    HolderCellHeightMin := HolderCellHeightMin + 52.5 ;начальную точку по горизонтали переводим на следующую ячейку
    HolderCellHeightMax := HolderCellHeightMax + 52.5 ;конечную  точку по горизонтали переводим на следующую ячейку
}
MsgBox координаты ячейки по горизонтали %HolderCellHeightMin%, %HolderCellHeightMax%. Число совпадений %CurrencyCell%.
Return
</code></pre></div><p>Вероятно, что все это нужно загнать в функцию с подставлением изображения в качестве переменной (не знаю как), но учитывая, что 1 картинку скрипт обрабатывает порядка секунды, увеличение этого количества до 30 даст соответствующее количество секунд на выполнение. А хотелось бы уложиться в 3-5 секунд. </p><p>Кроме того, мне совершенно не нравится объемность кода, учитывая, что действия простые и наверяка можно как то сократить.<br />Заранее спасибо.</p>]]></content>
			<author>
				<name><![CDATA[Bromka]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=39929</uri>
			</author>
			<updated>2019-02-04T05:22:05Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=131958#p131958</id>
		</entry>
</feed>
