|
|
|
Рисуем с помощью пилота |
|
|
cirus |
27.6.2019, 3:00
|
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26540
Пользователь №: 16.971
Возраст: 29
|
Цитата можно ли выполнить поставленную задачу(расчертить сетку) на готовой пустой картинке? Код --lua local ffi=require "ffi" local cc=ffi.cast
local path_in=[[C:\1.bmp]] -- путь к картинке local path_out=[[C:\2.bmp]] -- путь куда сохранить картинку с сеткой local setkaX, setkaY = 5, 5 -- размеры сетки local setkaR, setkaG, setkaB = 255, 0, 255 -- цвет сетки в ргб
local address, width, height, length = loadimage(path_in) -- загрузить картинку if address > 0 then -- если загружена for y=0, height-1 do for x=0, length-3, 3 do if x % setkaX == 0 or y % setkaY == 0 then cc("unsigned char*", address + x + y * length)[0]=setkaB cc("unsigned char*", address + x + y * length+1)[0]=setkaG cc("unsigned char*", address + x + y * length+2)[0]=setkaR end end end saveimage(address, path_out) -- сохранить картинку else log("Картинка не найдена") end
|
|
|
|
FREEON |
27.6.2019, 19:04
|
Journeyman
Сообщений: 365
Регистрация: 14.2.2017 Группа: Пользователи Наличность: 1319
Пользователь №: 18.346
Возраст: 25
|
Цитата(cirus @ 27.6.2019, 3:00) Код --lua local ffi=require "ffi" local cc=ffi.cast
local path_in=[[C:\1.bmp]] -- путь к картинке local path_out=[[C:\2.bmp]] -- путь куда сохранить картинку с сеткой local setkaX, setkaY = 5, 5 -- размеры сетки local setkaR, setkaG, setkaB = 255, 0, 255 -- цвет сетки в ргб
local address, width, height, length = loadimage(path_in) -- загрузить картинку if address > 0 then -- если загружена for y=0, height-1 do for x=0, length-3, 3 do if x % setkaX == 0 or y % setkaY == 0 then cc("unsigned char*", address + x + y * length)[0]=setkaB cc("unsigned char*", address + x + y * length+1)[0]=setkaG cc("unsigned char*", address + x + y * length+2)[0]=setkaR end end end saveimage(address, path_out) -- сохранить картинку else log("Картинка не найдена") end Да благодарю отфотошопил. Похоже для луа нужен какой-то плагин(файл)? Цитата module 'ffi' not found: no field package.preload['ffi'] no file '.\ffi.lua' no file 'D:\UOPilot\lua\ffi.lua' no file 'D:\UOPilot\lua\ffi\init.lua' no file 'D:\UOPilot\ffi.lua' no file 'D:\UOPilot\ff
|
|
|
|
cirus |
28.6.2019, 14:55
|
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26540
Пользователь №: 16.971
Возраст: 29
|
Цитата как еще задать толщину линий сетки код
Код --lua local ffi=require "ffi" local cc=ffi.cast
local path_in=[[C:\1.bmp]] -- путь к картинке local path_out=[[C:\2.bmp]] -- путь куда сохранить картинку с сеткой local setkaX, setkaY = 10, 10 -- размеры сетки local setkaR, setkaG, setkaB = 255, 0, 255 -- цвет сетки в ргб
local setka_width_X, setka_width_Y = 3, 3 -- толщина линий сетки
local address, width, height, length = loadimage(path_in) -- загрузить картинку if address > 0 then -- если загружена for y=0, height-1 do for x=0, length-3, 3 do if x % setkaX == 0 then for i=0, setka_width_X-1 do cc("unsigned char*", address + x + y * length + i * 3)[0]=setkaB cc("unsigned char*", address + x + y * length + i * 3 + 1)[0]=setkaG cc("unsigned char*", address + x + y * length + i * 3 + 2)[0]=setkaR end end
if y % setkaY == 0 then for i=0, setka_width_Y-1 do cc("unsigned char*", address + x + (y + i) * length)[0]=setkaB cc("unsigned char*", address + x + (y + i) * length+1)[0]=setkaG cc("unsigned char*", address + x + (y + i) * length+2)[0]=setkaR end end end end saveimage(address, path_out) -- сохранить картинку else log("Картинка не найдена") end
|
|
|
|
minfin |
8.9.2019, 18:05
|
Registred
Сообщений: 9
Регистрация: 26.1.2019 Группа: Пользователи Наличность: 0
Пользователь №: 19.206
Возраст: 29
|
можно рассмотреть формат .SVG (векторная графика)
// пишу сложный парсер для сложной инфографики и в моём случае очень разгрузило и по скриптам, и по нагрузке, и вообще по функционалу
есть редакторы, и даже есть браузерный редактор. бесплатный.
картинки рисуются кодом. особенно легко обновлять\редактировать\переносить текст в конкретные координаты.
работает в разы легче чем PSD, \\ где придется писать ручную правку слоёв через тонны Move\kleft при этом так же имеет функции Слоёв (Layers) которые можно править по переменной, не запуская сам редактор. (через write пилота)
\\ через костыли: координатам\слоям\объектам\тексту можно задавать переменные, объединять в группы, а через булиан в пилоте можно задать условия if на Цвет например... или если есть окружности\маркеры\линии, то можно менять их размерность\толщину\длину. в зависимости от if
так, если какая-то $переменная, например, в критической отметке, то можно изменить цвет на красный, увеличить размер шрифта, сделать жирным ... и уже от соотношения, можно влиять на политику расположения координат индекса (родительского слоя) проще говоря: одной правкой в фоновом режиме, можно переместить огромный графический массив, в соответствии с логикой высчитанной в UO что идеально. и моментально.
формат SVG в браузере отображает как картинку, но текст выделяется\ищется\редактируется, а ссылки кликабельны. чего нет в Пейнте и сложно реализуемо в фотошопе.
ну и соответственно, если в пейнте начать рисовать, то изменить уже невозможно. в SVG же достаточно одной правкой, в определённой строке, определённого параметра, отвечающего за координат Х\Y\угол\радиус\синус\косинус\экспоненту обновлять хоть в режиме реального времени.
SVG внутри похож на HTML\XML\CSS. так что лично я (нуб) разобрался дня за 3. теперь вспоминаю язык Пилота =) годов из 2005
____________ не знаю для чего автору рисовать сетку в пейнте................ в SVG она делается буквально тремя строками кода, прямо из Пилота.
|
|
|
|
minfin |
8.9.2019, 19:10
|
Registred
Сообщений: 9
Регистрация: 26.1.2019 Группа: Пользователи Наличность: 0
Пользователь №: 19.206
Возраст: 29
|
Код <svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%"> <style type="text/css"> line { stroke: #ccc; } </style> <defs> <pattern id="diagonalHatch" width="10" height="10" patternTransform="rotate(45)" patternUnits="userSpaceOnUse"> <line x1="0" y1="0" x2="0" y2="10" /> </pattern> </defs> <rect width="100%" height="100%" fill="url(#diagonalHatch)" /> <g class="layer"> <title>TEST</title> <text fill="#000000" font-family="serif" font-size="24" id="svg_1" stroke="#000000" stroke-width="0" text-anchor="middle" x="265.5" xml:space="preserve" y="77.40625">TEST[</text> </g>
</svg>
вот вроде... проверить времени нет. Мультизагружен =) но так чтоб понимать примерно по коду. id="svg_1" - и есть переменная текстового слоя TEST. костыль именно к ней. из этой строки (через regexp) уже редактируется весь слой. как хочешь. тот же метод к Линиям\окружностям\и тп.
|
|
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|