JPEG/GIF laboratory 1.1
(c) Sam Style
(c) Cooper/RSM/P7S
──────────────────────────────────────────
От редакции: данный текст представляет
собой авторское описание данной прграммы с
моей рецензией в конце.
Когда совсем я разбогатею,
Я стану намного добрее
Надо ловить за жопу удачу,
А я вроде это умею
"Кирпичи"
ВелКам!
Итак, конвертер нужен для конверсии
JPEG'ов в спековские экраны и GIF'ов в
анимационные файлы. Последнее, судя по
тому, что более я ничего не видел, при-
надлежит мне любимому.
Конкретно в этой версии новое:
(!) сохранение триколора в три файла (red,
grn, blu)
(!) наконец-то кадры анимации начали прес-
соваться; в среднем файл жмётся в 1.5-
3 раза, но у меня доходило и до 6 раз!
(!) два метода прессовки кадров (о преиму-
ществах каждого читай далее)
(+) размывка при ширине результата 256 пи-
кселей не оставляет справа вертикаль-
ную полосу.
(+) если в GIF'е код очистки встречался в
ходе изображения, такое могло привести
к полету компучера в космос.
(-) перед входом в ANI-плейер бывает за-
держка в секунду-другую: мы сканируем
файл и делаем табличку кадров.
Само описание:
1. Методы конверсии:
- размывка (dithering по Floyd-Steinberg)
сделано так же, как и в JPEGviewer 0.2:
как год назад вынул процедурину, так
почти и не менял.
- текстура в 32 градации согласно яркости
пикселей.
- тритон: та же текстура только в три
градации (три тона, отсюда и название)
с плавающими границами (см. линейки).
- солидол есть просто заливка по ст. биту
яркости.
2. Масштабирование: вот это то, чем мой
конвертер выгодно отличается от AlCo-
вского. Хоть он и делает масштаб в сво-
ей проге, но как бы я тут первый...
- автомасштаб пропорционально жмет или
тянет картинку так, чтоб она помести-
лась в наш родный экран 256*192.
- авто по X тянет (жмет) картинку, чтобы
она влезла в 256 пикселей по координате
X.
- авто по Y делает то же с Y: жмем-тянем
до 192.
- адын в адын вырезает из картинки кусок
256*192, если так вообще можно (нельзя,
когда изображение само маленькое).
- увеличение позволяет вырезать из кар-
тинки любой регион с соотношением сто-
рон 4:3.
- уменьшение независимо от размера кар-
тинки предлагает вписать ее в часть эк-
рана.
- диспропорция уже непропорциональное де-
ло: тянет или жмет картинку до полного
заполнения экрана так может оказаться,
что по X она растягивается, а по Y сжи-
мается.
- произвол это произвол... является рас-
ширением 'диспропорции' и конвертит
изображение в любой кусок экрана разме-
рами от 8*3 до 255*192.
3. Типы экранов:
- нормальный, или стандартный экран дли-
ной #1B00 или #1800 - смотря как кон-
вертил и сохранял.
- два экрана - смотрятся 50Гц-переключе-
нием, это самый тормознутый в плане ко-
нверсии экран, но бывает, что получает-
ся ничего... Длина #3600.
- триколор: три экрана длиной 3*#1800=
#4800. Для просмотра в идеале подходит
QSV, 8col0. 12 и иже с ними, а мне про-
сто жалко тратить память под огромную,
но быструю моргалку. Начиная с этой
версии триколор можно раскидать по трем
файлам (*.red, *.grn, *.blu).
- образ (IMAGE) есть моя придумка, верну-
вшаяся в строй после глобальной переко-
дировки JPEG'а. Это есть огромный (или
нет) ч/б спрайт - результат конверсии.
Если вышел небольшим, его можно хранить
на диске как экран(чик), ведь занимать
он будет меньше 24 секторов. На image
действуют все типы масштабов, но есть
одно ограничение: результат не может
быть шире 1024 (4 экрана) пикселей. Под
буфер image выдано 64кБ, он туда должен
уместиться... По максимуму туда лезет
спрайт 1024*511.
4. Линейки:
- яркость повышает или понижает оную у
пикселей.
- контраст отвечает за разброс яркости от
#80.
Яркость и контраст совершенно не затра-
гивают цветной солидол и триколор.
- red, green,blue влияют на интенсивность
цвета и действуют только на цветную ко-
нверсию.
- black limit в цветном экране и двухэк-
раннике определяет черный цвет: если R+
G+B<black limit, то цвет считается чер-
ным.
- колоризация сильно влияет на линейную
схему передачи цвета (см. далее).
- triton lev1, lev2 определяют границы
тритона: если яркость меньше их обеих,
то заливки не будет,если больше обеих -
сплошной солидол, и наконец заливка се-
ткой, если ни туды, ни сюды.
5. Флаги:
Во-первых это 7 старых (больше 4 меся-
цев) флагов:
- Цветной scr вкл - делается экран с цве-
том. Имеет смысл только для цветного
солидола, остальное выглядит не особо
красиво.
- предпросмотр сделан для быстрой конвер-
сии JPEG'а за счет потери качества.
Мной обычно эта штука пользуется, чтобы
определить, что там где и в каком месте
надо вырезать, чтоб сиська в кадр попа-
ла :)))
- линейный цвет является дешевой, но тон-
ко настраиваемой альтернативой стандар-
тной (hi-bit) определялки ZX-цвета из
TrueColorа. Тонкая настройка ведется
линейкой 'колоризация', позволяя полу-
чить все извраты от сине-красно-зелено-
го (0) до черно-белого (255). для раз-
ных картинок нужна разная колоризация,
а то бывало, что и красный (краснее не-
куда) цвет становился белым...
- 2 цвета в боксе. Если он выключен, в
цветной SCR ложится только INK, а если
включен, то PAPER тоже.
- подавление яркости убивает в боксе 8*8
весь 'не такой' цвет. 'Таким' считается
самый частый.
- негатив он и в африке негатив.
- все файлы - чисто сервисный флаг, кото-
рый в выкл. состоянии заставляет от-
фильтровывать в каталоге файлы по рас-
ширению.
Есть и несколько новых (моложе 4 меся-
цев) флагов:
- ч/б экран с atr: если поконверчен экран
без атрибутов, он может быть сохранен с
оными (ink 7).
- триколор как BRG: сильно удивившись за-
яве AlCo, что триколоры RGB вообще сла-
бо распространены и чуть ли не изгои, я
все же вделал возможность сохранения их
в BRG-формате...
- image cutter сохраняет не весь image, а
только то, что в данный момент показано
на экране.
- RGB отдельно: это новая возможность со-
хранить триколор как 3 отдельных экрана
с одним именем и расширениямни red,grn,
blu (по цвету).
6. Паковка анимации:
Ранее анимация представляла собой просто
несколько голимых спрайтов, следующих друг
за другом. Такой расклад вряд ли кого ра-
довал - некоторые мультики доходили до 50
кБ размером. С целью убрать этот прыщ, я
вделал возможность паковать анимацию и
предлагаю 2 метода упаковки, сделаных на
основе упаковки роликов VideoStudio.
- BITPACK сделан так же как в VS - этим
методом лучше всего жмется 'сетка', т.е
повторяющаяся пара байт (#55, #аа, #55,
#аа,...).
- ZEROPACK модифицирован мной из bitpackа
Он опирается на повтор байт (#00, #00,
#00 или #73,#73,#73...) и поэтому более
подходит для солидола.
Результаты теста показали, что на хоро-
шей картинке при солидоле zeropack может
выиграть до 20% у bitpack-а и снять в сум-
ме до 60% у старых ani, тогда как на три-
тоне и текстуре лучше был bitpack (не все-
гда, но часто).
Есть две причины, по которым кадр не бу-
дет жаться:
1. Ты забыл включить упаковку.
2. Это ключевой кадр с размером спрайта
более 4кБ. просто для хранения ключево-
го кадра мне нужен голый (непакованый)
спрайт, а буфер для него пока один - 4
кБ за словарем LZW (хорошо еще код LZW
ограничен 12 битами...). Нужен буфер 6
кБ, тогда паковаться будет все!
7. Процесс:
Итак, ты настроил все, что надо, нажал
ЗАПУСК и выбрал нужный файл. Если он узнан
как JPEG или GIF, процесс пойдет.
Если масштаб это допускает, будет пред-
ложено выбрать место (и размер) области
конверсии.
QAOP - движение рамки (в уменьшении и
произволе это изменение размера, а
в увеличении image изменение раз-
мера экрана в образе).
QAOP+enter - если можно, меняет размер
рамки.
SShift - подкладывает под рамку последний
сконверченый стандартный экран.
Так можно точнее выбрать место.
Space, LMB - старт конверсии.
В процессе конверсии на экран выводится
только SCR и кадры GIFa, остальное конвер-
тится тихой сапой в память, а глупого вида
будильник развлекает тебя своей гребаной
рожей...
Как бы там ни было, а в конце ты увидишь
зеленое окно с радостной надписью, что-де
'Конверсия завершена'. Могут быть и ошиб-
ки, из которых только переполнение не та-
кое страшное. Переполнение image оставит
все что влезло, а переполнение анимации
отрежет текущий кадр (типа кастрируется).
8. Сохранение:
Отдельно хранится экран, который затира-
ется только когда заменяется другим или
сохраняется кусок image. Экран можно уз-
реть и сохранить через Save scrЫn. Все
остальное (напоминаю, что оно убивает друг
друга) видится и сохраняется через Save
extend. Отдельно можно рассказать об ani-
плейере.
9. ANI-плейер:
Это встроеная пурга для играния или по-
кадрового просмотра только что сконверче-
ной анимации. Снизу слева направо сидят
кнопки: PLAY, НА НАЧАЛО, СЛЕД. КАДР, ПРЕД.
КАДР, ДОБАВИТЬ, ТОРМОЗ, СОХРАНИТЬ, ВЫЙТИ.
Тормоз эта такая хрень, позволяющая за-
медлить или ускорить анимацию (забыл гар-
кнуть, что задержки кадров такие же как в
самом GIFе: тока там в 1:100, а у нас в 1:
50 сек). Меняется кнопками влево-вправо.
Когда анимация не играется, кнопками вверх
и вниз меняется длительность текущего кад-
ра.
Сохраняется анимация с теми задержками,
которые были показаны. Если тормоз не до-
бавить, он не сохранится.
10. На GIF не действуют:
- тип экрана, потому как делается в ани-
мацию.
- из масштаба только уменьшение и произ-
вол.
- из флагов вообще ничего (ибо не надо).
- black limit и колоризация, ибо ANI без
цвета.
11. Если надо:
Ежели у кого вдруг найдется мысль, кото-
рая мне в мозг не залезла при создании
проги, пусть мне мылит. Могу еще немного
наколбасить...
Горизонты будут раздвинуты
(c) SAM style, 5.10.04
Великий Новгород, Россия
samstyle@list.ru
От Cooper'а: Прикольная, кстати, програм-
ма! Наконец-то, не надо бегать по разным
прогам, чтобы сконвертировать картинки ра-
зличных форматов. Радует наличие гибкой
настройки и широкий выбор конечных форма-
тов. Качество конвертирования тоже, в при-
нципе, неплохое. Довольно удобный интер-
фейс. Хотелось бы, чтобы ползунки можно
было изменять и помощью миши. Типа, нажал
на шкалу курсором и мышей вправо или вле-
во... Вобщем, качественный продукт. А что
ещё можно было ожидать от SAM style?
──────────────────────────────────────────