Arseniy10 50 Опубликовано: 7 февраля, 2017 (изменено) GPIC Good_Pudge's Pictures Небольшая библиотека, позволяющая сохранять изображения. Но в чем же ее особенность? Библиотека с помощью gpu.get берет символ и его цвета. Затем она перебирает таблицу, сравнивает с цветом и если значение из таблицы совпадает с цветом, то берет соответствующий ключ таблицы и с помощью string.char превращает в ASCII символ. На 1 пиксель уходит 3 байта (цвет фона, цвет символов, символ). Пример работы: local gpic = require("gpic") local pic = gpic.new(1, 1, 10, 5) --X, Y, Ширина, Высота --вернет таблицу с изображением gpic.draw(10, 10, pic) --рисует на координатах (10;10) gpic.write(pic,"/home/test.pic") --пишет изображение в указанный путь local image = gpic.read("/home/test.pic") --читает изображение из указанного пути и возвращает изображение, которое потом можно отрисовать с помощью gpic.draw() Скачать (нужен HPM): hpm install GPIC@2.2.0 Скриншоты: Изменено 7 марта, 2017 пользователем Arseniy10 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Гость Kartze Опубликовано: 7 февраля, 2017 Скриншоты. Ни черта не понять. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Fingercomp 4 409 Опубликовано: 7 февраля, 2017 Перечитай ещё раз (и потом ещё раз), что ты написал. Пока это жестокий поток мыслей, в котором ничегошеньки не понятно. Используй репозиторий https://hel.fomalhaut.me/ вместо пасты миллиона ссылок с wget. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 7 февраля, 2017 Как я понял, либа позволяет сохранять область экрана в таблицу, а потом восстанавливать. На мой взгляд, три байта на символ это чересчур. Дело в том, что на экране соседние символы имеют как правило одинаковый цвет фона и шрифта. Это можно использовать, что бы минимизировать объем занимаемой памяти. Посмотри как я это делал в MiddayCommanderе и в отладчике. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Asior 586 Опубликовано: 6 марта, 2017 (изменено) Замечательная библиотека, писал нечто похожее, но там были крупные проблемы с сохранением и обратным чтением картинки. Собственно у вас та-же ошибка. Вот код после которого программа клеит ласты. local pic=require('gpic') local com = require("component") local gpu = com.gpu for y=1,25 do for x=1,80 do gpu.setForeground(math.random(0xffffaa)) gpu.set(x,y,'Ж') end os.sleep(0) end pic.write(pic.new(1,1,80,25),"test.txt") pic.draw(1,1,pic.read('test.txt')) Удачной отладки вам Изменено 6 марта, 2017 пользователем Asior Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Laine_prikol 48 Опубликовано: 6 марта, 2017 (изменено) У меня почему-то когда сохраняю в файл, в файле просто число 80 и больше нечего. if keyboard.isControlDown() == true then os.sleep(0.1) local picture = gpic.new(1, 1, 80, 25) gpic.draw(1, 1, picture) gpic.write(picture,"/home/image.gpic") end Изменено 6 марта, 2017 пользователем Laine_prikol Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Ingr 90 Опубликовано: 6 марта, 2017 (изменено) local pic = gpic.new(1, 1, 10, 5) --X, Y, Ширина, Длина простите, а "Длина" это куда? У меня почему-то когда сохраняю в файл, в файле просто число 80 и больше нечего. а что должно быть? Изменено 6 марта, 2017 пользователем Ingr Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Laine_prikol 48 Опубликовано: 7 марта, 2017 а что должно быть? Точно не число 80, потому-что когда я хочу отобразить картинку которую только что сохранил, нечего не происходит Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Ingr 90 Опубликовано: 7 марта, 2017 если я правильно понял, то либа должна сохранять и воспроизводить на символьном экране список строк? Если честно то когда это называют картинкой, то несколько режет слух. Я, из за этого, даже не сразу понял сто это за либа. Пожалуйста пишите описания так чтобы было понятно даже таким нубам как я Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Arseniy10 Автор темы 50 Опубликовано: 7 марта, 2017 (изменено) У меня почему-то когда сохраняю в файл, в файле просто число 80 и больше нечего. if keyboard.isControlDown() == true then os.sleep(0.1) local picture = gpic.new(1, 1, 80, 25) gpic.draw(1, 1, picture) gpic.write(picture,"/home/image.gpic") end Скопировал твой код, возможно у тебя неправильная кодировка. Само число 80 ДОЛЖНО быть, ибо это ширина картинки. Изменено 7 марта, 2017 пользователем Arseniy10 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Arseniy10 Автор темы 50 Опубликовано: 7 марта, 2017 (изменено) Замечательная библиотека, писал нечто похожее, но там были крупные проблемы с сохранением и обратным чтением картинки. Собственно у вас та-же ошибка. Вот код после которого программа клеит ласты. local pic=require('gpic') local com = require("component") local gpu = com.gpu for y=1,25 do for x=1,80 do gpu.setForeground(math.random(0xffffaa)) gpu.set(x,y,'Ж') end os.sleep(0) end pic.write(pic.new(1,1,80,25),"test.txt") pic.draw(1,1,pic.read('test.txt')) Удачной отладки вам Я нашел ошибку Цвет, который забрал метод: Цвет в таблице: Сама таблица создавалась по этой картинке: Как это править, не знаю Изменено 7 марта, 2017 пользователем Arseniy10 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro 3 563 Опубликовано: 7 марта, 2017 Цвет хранится в числе типа number. Значение может быть любым. Но визуально оно сведётся к одному из цветов таблицы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Laine_prikol 48 Опубликовано: 7 марта, 2017 Скопировал твой код, возможно у тебя неправильная кодировка. Само число 80 ДОЛЖНО быть, ибо это ширина картинки. На OpenOS 1.6 всё нормально сохраняется, а на 1.5 почему-то просто число 80 и больше нечего Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах