-=RUS=- | Дата: Суббота, 29.11.2014, 13:29 | Сообщение # 1 |
 Генералиссимус
Группа: Администраторы
Сообщений: 352
Статус: Offline
| (Komp 2.doc)
▓▓┐ ▓▓┐ ▓▓▓▓▓┐ ▓▓┐ ▓▓┐ ▓▓▓▓▓▓┐ ▓▓▓▓▓┐ ▓▓┤ ▓▓┼┘▓▓┼┴┴▓▓┐▓▓▓┐ ▓▓▓┤ ▓▓┼┴┴▓▓┐ ▓▓┼┴┴▓▓┐ ▓▓▓▓▓┼┘ ▓▓┤ ▓▓┤▓▓▓▓▓▓▓▓┤ ▓▓┤ ▓▓┤ └┴┘ ▓▓┼┘ ▓▓┼┴▓▓┐ ▓▓┤ ▓▓┤▓▓┼▓▓┼▓▓┤ ▓▓▓▓▓▓┼┘ ▓▓┼┴┘ ▓▓┤ ▓▓┐▓▓┤ ▓▓┤▓▓┤└┴┘▓▓┤ ▓▓┼┴┴┴┘ ▓▓┼┴┘ ▓▓┤ ▓▓┤└▓▓▓▓▓┼┘▓▓┤ ▓▓┤ ▓▓┤ ▓▓▓▓▓▓▓┐ └┴┘ └┴┘ └┴┴┴┴┘ └┴┘ └┴┘ └┴┘ └┴┴┴┴┴┴┘
┌──────────────────────────────────────────────────────────────┐ │ ОПИСАНИЕ ПРОГРАММЫ 'Komp 2' │ └──────────────────────────────────────────────────────────────┘
Программа 'Komp 2' предназначена для сжатия графических фай- лов или, проще говоря, изображений, созданных в каком-либо гра- фическом редакторе. 'Komp 2' является новой версией программы 'Komp'. Эта модификация была разработана автором с учётом пред- ложений и замечаний некоторых пользователей и имеет ряд преиму- ществ относительно первоначального варианта. Особенности новой версии таковы: во-первых, в отличие от старого 'Komp'а, для ра- боты с программой подходят файлы, созданные в любом из редакто- ров, известных автору на данный момент; во-вторых, с самого фай- ла сняты какие-либо ограничения (по количеству "свободного" фона в картинке и по длине файла: не более 40004); кроме того, для удобства добавлен новый режим, который выводит на экран уже закодированное изображение. Наконец, повысилось качество самого сжатия - как пример, можно привести тот факт, что заставка, по- являющаяся на экране после запуска, занимала в редакторе 'ГР4' 1642 байта, после сжатия программой 'Komp' она сократилась до 744 байт, а с использованием 'Komp 2' её длина стала 612.
Перед началом работы выводится меню для выбора режима:
1) Выход с сохранением программы. После реализации этого ре- жима программу можно перезапустить с адреса 1000.
2) Ввод количества байт в строке и количества строк. В этом режиме можно установить или изменить данные, характеризую- щие размер картинки. Для файлов, записанных из редакторов типа 'ГР4' или 'ГРЕД0' использование этого режима не тре- буется, так как их первые два слова уже содержат необхо- димую информацию. После выбора этого пункта меню, можно выбрать один из под- режимов: при нажатии '1' будет производиться ввод данных с клавиатуры, а при нажатии клавиши '2' число байт и строк можно установить наглядно: при помощи стрелок '←' и '→' картинка на экране будет изменяться, а когда она примет свой нормальный вид, остается нажать 'ВВОД', чтобы число байт и строк было зафиксировано. Следует помнить, что чис- ло байт в строке лежит в пределах от 1 до 100, а число строк от 1 до 400.
3) Загрузка файла, предназначенного для сжатия.
4) Запись сжатого файла.
5) Запись сжатого файла с перемещаемым блоком, который выво- дит картинку на экран. Если загрузить полученный в этом режиме модуль с любого адреса и осуществить запуск с этого же адреса,то изображение появится в заданном месте экрана.
6) Режим вывода изображения на экран. Перед выводом запраши- вается адрес верхнего левого угла картинки, причём прог- рамма контролирует введенный адрес так, чтобы изображение не вышло за пределы экрана.
Если в памяти отсутствует сжатая картинка, то режимы 4), 5) и 6) недоступны.
Необходимо подробнее сказать о режиме загрузки исходного фай- ла (3). Особенность состоит в том, что режим предназначен как для загрузки картинки в обычном формате, так и для загрузки фай- ла в формате редактора 'P1.0M'. Этот редактор сам по себе запи- сывает графику в сжатом виде, но во-первых, не совсем приятно хранить файл, записанный по модулям (при том, что расшифровать его можно только в самом P1.0M) и во-вторых, 'Komp 2' даёт выиг- рыш в сжатии порядка 1 Кбайта. Для чтения обычного файла режим (3) вызывается при помощи клавиши 'ВВОД', а для загрузки формата 'P0.1M' следует вызывать этот режим пробелом.
После успешной загрузки файла, если два его первых слова мо- гут рассматриваться, как количество байт в строке и количество строк, выдаётся запрос на сжатие. При ответе N (Н-РУС) снова вы- водится меню; при ответе D (Д) файл сжимается "по вертикали". Сжатие по вертикали идаёт максимальный эффект для большинства картинок. При желании сжать файл "по горизонтали" в ответ на запрос вместо N или D вводится H([аш], ЛАТ).
Если длина модуля, полученного в результате сжатия превышает 31600, то меню на экран не выводится. В этом случае возможна только запись модуля, которая осуществляется после нажатия любой клавиши. Выход в меню происходит по клавише 'СТОП'.
Структура сжатого модуля такова: -служебная информация; -дан- ные; -таблица. Служебная информация - это 3 слова: 1-е содержит смещение от начала файла до первого байта таблицы, 2-е и 3-е – количество байт в строке и количество строк. Данные представляют собой графическую информацию, в которой байты, повторяющиеся бо- лее 2-х раз подряд заменены двумя байтами: в 1-ом записано коли- чество повторений содержимого 2-го байта. Таблица является двоичным массивом, который служит ключом к расшифровке всего изображения.
Блок вывода сжатой картинки на экран, расположенный по адресу 6400, универсален. Он изменяется основной программой в зависи- мости от характера сжатия (по вертикали/по горизонтали). Автор предлагает следующий текст блока (после ';' приведены изменения для горизонтального сжатия):
----------------------------------------------------------------
EMT 14 MOV PC,R3 ADD #164,R3 MOV (R3)+,R0 MOV R3,R5 ADD (R3)+,R5 MOV (R3)+,R1 MOV (R3)+,R2 MOV #200,R4 MET1: BITB R4,@R5 BEQ MET7 JSR PC,MET5 BITB R4,@R5 BEQ MET2 JSR PC,MET9 MET2: MOV R4,-(SP) MOVB (R3)+,R4 BIC #177400,R4 1: MOVB @R3,(R0)+ JSR PC,MET9+2 SOB R4,1 INC R3 MET3: MOV (SP)+,R4 JSR PC,MET5 BR MET1 MET4: INC R5 MET5: RORB R4 BCS MET4 MET6: RTS PC MET7: MOV R4,-(SP) MOV #2,R4 MET8: JSR PC,MET9 SOB R4,MET8 BR MET3 MET9: MOVB (R3)+,(R0)+ ADD #77,R0 ;SOB R1,MET6 SOB R2,MET6 ;MOV BYTES,R1 MOV LINES,R2 ;SUB R1,R0 MOV R5,-(SP) ;ADD #100,R0 MOV #100,R5 ;SOB R2,MET6 2: SUB R2,R0 ;EMT 6 SOB R5,2 ;CMP (SP)+,(SP)+ MOV (SP)+,R5 ;RTS PC INC R0 SOB R1,MET6 EMT 6 CMP (SP)+,(SP)+ RTS PC
---------------------------------------------------------------- BUFADR:<Адрес вывода на экран> BEGIN: <Смещение до таблицы> BYTES: <Количество байт в строке> LINES: <Количество строк> ----------------------------------------------------------------
Программа 'Komp 2' позволяет сжать файл графики в 1.5-5 раз. Следует заметить, что чем более детально сделан рисунок, тем хуже он сжимается. Коэффициент сжатия резко падает (1.5-2), если в картинке в большом количестве используются "нестандартные" цвета - цвета, полученные смешением 4-х обычных. Не рекомендуется пытаться сжать при помощи 'Komp 2' обычные программы, так как в основном сжатие будет мало результативным, а в отдельных случаях может возникнуть даже обратный эффект.
----------------------------------------------------------------
Автор: В.А.Бабкин, г.Москва, 25.08.1990.
|
|
| |