Как создать свой сайт

Работа с изображениями в "Кибор"

Скачать Кибор

О программе Кибор

Описание языка Кибор
Переменные

Операции с переменными
Логика и переходы
Указатели
Функции

Список функций
Индификация окон и контролов

Управление окнами

Клавиатура

Мышь
Контролы
Работа с изображением
Сканирование экрана и поиск изображений
Поиск 3Д моделей в играх
Определение цвета пикселя
Система
Вывод сообщений
Вспомогательные

Интерфейс программы
Текстовый редактор

Контролы управления

Визуальные инструменты Кибор

Шпион получающий информацию о окнах, контролах, координатах мыши и цвете экрана

Сканер графического интерфейса

Демонстрационные примеры
Бот для игры в пасьянс Косынка
Бот для Warspear Online

Список демонстрационных примеров...

Загрузка и работа с картинками.

Для сканирования и поиска конкретных изображений на экране, окне или игре мы должны задать программе что именно она должна искать (о поиске в следующей статье).

Тут я опишу загрузку изображений с .bmp файлов в память программы и работу с ними. Как создавать эти файлы я тоже опишу позже.

Загрузка .bmp осуществляется функцией loadimage. Картинки хранятся в программе в двухмерных масивах int:
loadimage(#image[0][0], "путь в файлу .bmp");
Можно загружать файлы JPG и PNG (не использовать для поиска). Для этого надо указать в первом параметре тип файла:
loadimage (JPG, #Image_0[0][0], "путь в файлу.jpg");
loadimage (PNG, #Image_0[0][0], "путь в файлу.png");
Певый параметр - указатель на двухмерный масив int
Второй - string, путь к файлу.
Размер масива должен быть больше или равен размеру загружаемого изображения. Певый столбец X, второй Y. Старт с левого верхнего угла.
То есть в image[0][0] находится цвет самого левого верхнего пикселя картики, в image[1][0] цвет второго по горизонтали пикселя и т.д.

Пример:
int Image[70][90];
loadimage (#Image[0][0], "C:\Image.bmp");

В данном случае мы загружаем файл Image.bmp в масив Image[70][90]. Размер картинки не должен быть больше 70 на 90.
Размер масива может быть больше размера картинки. К примеру  int Image[250][300] для картинки 100 на 200. Ошибки не будет и все функции будут прекрасно работать с этой картинкой в этом масиве. Просто неиспользумая память заполнится значением -1.

Функция loadimage возвращает:
-1   отсутствует файл
-2   Размер масива по x меньше размера картинки по x
 -3 Размер масива по y меньше размера картинки по y
В случае успешной загрузки возвращается количество загруженых пикселей.

Проверить успешность загрузки можно так:
if (loadimage (#Image[0][0], "C:\Image.bmp")>0)messagebox("картинка загружена");
else messagebox("ошибка");
Или вывести код ошибки:
int r=loadimage (#Image[0][0], "C:\Image.bmp");
if (r<0)messagebox(r);

Если нам не известен реальный размер загружаемого изображения можно использовать функции imagewidth и imageheight,
Они возвращают размер загруженного изображения.
Пример:
int Image[300][300];
loadimage (#Image[0][0], "C:\Image.bmp");//К примеру картина имеет размер 100 на 200...
int X_image=imagewidth(#Image[0][0]);//X_image=100
int Y_image=imageheight(#Image[0][0]);//Y_image=200
В виде параметра эти функции принимают указатель на двухмерный масив int, в который загружено изображение.

Пример копирования части изображения в другую переменную меньшего размера:
int Image[300][300];
loadimage (#Image[0][0], "C:\Image.bmp");//К примеру картина имеет размер 100 на 200...
//нам надо создать новый рисунок, содержащий часть Image.bmp
int Image1[50][50];//выделяем память для нового рисунка размером 50 на 50
//копируем
int x, y;
       x=0;
       xs: if (x<50)
       {
y=0;
ys: if (y<50)
{
Image1[x][y]=Image[x][y];
y++;
goto ys;
}
       x++;
       goto xs;
       }

Несмотря на разные размеры масивов никаких смещений при копирование делать не надо.

Для создания изображений используемых в скрипте для поиска лучше воспользоваться встроенным в Кибор графическим редактором.
Он сам создаст .bmp файл, заполнит неучаствующие в поиске области фоновым цветом, выделив необходимое количество памяти и сгенерирует код загрузки и поиска этого изображения.