Вход

Просмотр полной версии : Just.SCR - простой, но очень полезный конвертер картинок в формат .scr



Oleg Origin
26.01.2016, 00:59
"Ещё один кросс-платформенный конвертер картинок? Зачем?" - думаю, что многие зададут такой вопрос.

Но когда возникает простейшая задача: перевести спектрумовскую гифку в .SCR, то оказывается, что ни один продвинутый конвертер не может корректно распознать уровни яркости. Например, bmp2scr присваивает атрибуты яркости по нелинейному "интеллектуальному" алгоритму - и результат в большинстве случаев имеет отличия от оригинала. Ещё хуже дело обстоит, если палитра в картинке оличается от чистых спектрумовских цветов. Когда я выкладывал свои новые работы, никому не удалось получить из них исходный .scr - ZX Paintbrush тоже не справился.

Ну, собственно, вот. Just.SCR справится со всем этим. Это конвертер для реверса спектрумовской графики обратно на Спектрум. В нём нет ничего лишнего, но свою задачу он выполняет отменно, и есть несколько полезностей, вроде распознавания атрибута мерцания из анимированных гифок. Или поддержки командной строки, благодаря чему вы можете встроить эту утилиту в вашу собственную среду разработки.


Конвертирует файлы .BMP, .GIF и .PNG в формат экрана ZX Spectrum (.SCR).
Предназначен для работы с пиксельными файлами, изначально подготовленными для ZX Spectrum, со стандартными графическими ограничениями. Не распознает размытые, перемасштабированные файлы, изображения с потерей качества и т.д.
Корректно распознает яркость, понимает даже файлы с палитрой, значительно отличающейся от стандартных чистых цветов ZX Spectrum.
Распознает атрибут мерцания из двухкадровых анимированных .GIF-файлов.
Исходные файлы могут иметь любые размеры сторон, в итоге сохраняются стандартные спектрумовские экраны 256x192. Если исходный файл большего размера, то берется центральная часть - остальное считается бордюром (края должны быть попарно равными).
Поддерживается пакетная обработка и командная строка.


http://www.olegorigin.org/pic/util_justscr.gif

Для Windows.

Скачать можно здесь (http://www.olegorigin.org/justscr.html)

Установки не требует. В архивах также есть подробное описание на русском и английском языках.

zebest
26.01.2016, 10:02
Спасибо конечно, но для полного Just лично нам бы желательно еще и drag&drop :)
и в третьих. Возможно попался неудачный пример.
http://s2.micp.ru/ozGDu.bmphttp://s3.micp.ru/Cue30.png
слева оригинальная картинка в bmp, справа полсе конвертации и скрин с эмууля. В правом нижнем углу как то нехорошо:)
Причем та же картинка в gif тоже косячит, но немного по другому, и там же.

Oleg Origin
26.01.2016, 10:15
Спасибо конечно, но для полного Just лично нам бы желательно еще и drag&drop :)
и в третьих. Возможно попался неудачный пример...

Спасибо за багрепорт! =)

Дело в том, что исходная картинка "не совсем спектрумовская" - в ней оказалось 17 цветов. В подобных случаях невозможно гарантировать результат по очевидным причинам. Как я написал, картинки должны учитывать спектрумовские ограничения - иначе перевод в .SCR один-в-один невозможен в принципе. Однако, в следующей версии я попробую доработать код, чтобы подобная картинка обрабатывалась корректнее (ведь она кажется очень простой).

И добавлю drag&drop - думаю, проблем не возникнет...

----

Сделано!

CityAceE
26.01.2016, 10:44
При попытке конвертировать вот эту картинку (этот скриншот с ZX-эмулятора):

http://storage5.static.itmages.ru/i/16/0126/h_1453794055_6534057_57caa25173.png

Получаю access violation:

http://storage5.static.itmages.ru/i/16/0126/h_1453794162_6315693_3fd7065ebc.png

Oleg Origin
26.01.2016, 10:57
При попытке конвертировать вот эту картинку (этот скриншот с ZX-эмулятора):
Получаю access violation:

Спасибо!
Да, сейчас проверил - .PNG с альфа-каналом (слои не сведены в картинке) не открываются. Посмотрю, что можно сделать.

----

Всё - починил, перезалил.

zebest
26.01.2016, 11:26
Дело в том, что исходная картинка "не совсем спектрумовская" - в ней оказалось 17 цветов.
Ну кто же знал.. BMP2SCR о таком и не задумывается.. На глаз - серый и серый.
Пришлось полазать по картинке с пипеткой. Действительно.
Основной серый цвет R:200 G:196 B:200, но нашелся и пискель с R:198 G:196 B:200.
Как бы уж оченно чувствительная программка, может "загрубить" градации между?))))

Oleg Origin
26.01.2016, 12:02
Ну кто же знал.. BMP2SCR о таком и не задумывается.. На глаз - серый и серый.
Пришлось полазать по картинке с пипеткой. Действительно.
Основной серый цвет R:200 G:196 B:200, но нашелся и пискель с R:198 G:196 B:200.
Как бы уж оченно чувствительная программка, может "загрубить" градации между?))))

Так она и занимается немного другими вещами, нежели BMP2SCR - тот конвертирует картинки произвольного содержания, а Just.SCR - именно для спектрумовской графики пиксель-в-пиксель. Алгоритм работает без сбоев, если в картинке нет ошибок (в то время как BMP2SCR и ZX Paintbrush - "фантазируют" на тему яркости).
Тут даже не в градации дело - определяются строго 15 цветов, а встретившиеся исключения (в том числе, например, использование одновременно яркого и неяркого атрибута в одном знакоместе) приведут к сложно прогнозируемому результату.

Но в целом, даже картинки с ошибками обрабатываются довольно адекватно. Вот, например, попробуйте такую задачу (половина картинки резко затенена, получается большее количество цветов):

http://i.imgur.com/6PTmDLV.png

Понятно, что лишний набор оттенков взять неоткуда, но картинка будет конвертирована наилучшим для данного случая образом.

Но я попробую модифицировать алгоритм, чтобы добиться лучшего результата в том числе и с вашей картинкой - я от этого не отказываюсь.
Главное тут - не испортить то, что работает хорошо =)

Oleg Origin
27.01.2016, 13:36
Обновлено до версии 1.0.3
(Простите меня, нашел ошибку в версии 1.0.2)

Проведены доработки по всем замечаниям, сделанным в этой ветке.

1.0.3
Исправлена ошибка в парсинге командной строки

1.0.2
Добавлена функция перетаскивания файлов в окно программы.
Расширение возможностей командной строки, в том числе для перетаскивания группы файлов на иконку программы.
Небольшие улучшения интерфейса.
Изменения основного алгоритма для более корректной обработки картинок, не соблюдающих графические ограничения ZX Spectrum.

1.0.1
Исправлена ошибка при открытии .PNG с альфа-каналом.

rasmer
27.01.2016, 19:17
а почему "маздайка онли"?

Oleg Origin
27.01.2016, 19:40
а почему "маздайка онли"?

Что сказать? Я знаю только две платформы - ZX Spectrum и Windows...

Oleg Origin
29.01.2016, 09:28
Мы же наивные - написано конвертер БМП-картинок значит конвертер.. А оно как конвертер-не-совсем-конвертер).
Название темы не поправить - но на других форумах я уже в заголовке написал, чтобы было понятнее: "конвертер для реверса спектрумовской графики обратно на спектрум". Ну и, для тех, кто рисует спектрумовскую графику в Paint, PS и т.д. - для современных ZX-художников и разработчиков игр.

Буквально месяц назад появился похожий конвертер - pxl2scr от introspec, но есть существенные отличия - он не пытается обработать места с "ошибками", а "подчёркивает" их, а если в картинке более 15 цветов - то вообще не выдает результата. И без графического интерфейса. Но всё это не значит, что конвертер плох - наоборот, до pxl2scr вообще не было ни одной (!) программы, которой можно было бы без ошибок перевести нарисованную в Фотошопе спектрумовскую картинку с произвольной палитрой. Например, bmp2scr неправильно распознает яркость.

За примеры большое спасибо! Моя программа, конечно, ближе именно к pxl2scr, и никакие возможности bmp2scr вообще не планировались, но благодаря вашим замечаниям буду улучшать и качество распознавания неспектрумовских картинок, хотя она на них и не рассчитана =)