stringtranslate.com

Сиксель

Логотип Википедии преобразован в формат Sixel и отображен в Konsole .

Sixel , сокращение от «шесть пикселей», — это формат растровой графики, поддерживаемый терминалами и принтерами DEC . Он состоит из шаблона высотой шесть пикселей и шириной одного пикселя, в результате чего получается 64 возможных шаблона. Каждому возможному шаблону присваивается символ ASCII , что упрощает передачу шестерен по 7-битным последовательным каналам.

Sixel был впервые представлен как способ отправки растровой графики на матричные принтеры DEC , такие как LA50 . После перевода в «шестиконтактный режим» следующие данные были интерпретированы для непосредственного управления шестью контактами девятиконтактной печатающей головки . Строка из шести символов кодирует одну строку изображения высотой 6 пикселей.

Позже система была повторно использована как способ отправки растровых данных на терминалы серии VT200 и VT320 при определении пользовательских наборов символов . Для передачи растрового изображения каждого символа используется серия шестерен. Эта функция известна как мягкие наборы символов или динамически переопределяемые наборы символов ( DRCS ). С помощью VT240 , VT241 , VT330 и VT340 терминалы могли декодировать на экран полное шестипиксельное изображение, подобное тем, которые ранее отправлялись на принтеры.

Описание

Sixel кодирует изображения, разбивая растровое изображение на серию горизонтальных полос высотой 6 пикселей. Каждый вертикальный столбец шириной в 1 пиксель в конкретной полосе образует один шестёрк. Пиксели каждого сикселя считываются как двоичные и кодируются в одно 6-битное число, при этом «включенные» пиксели кодируются как 1. Это число от 0 до 63 десятичных чисел затем преобразуется в один символ ASCII со смещением на 63, так что Полностью черный шестой номер с десятичным значением 0 кодируется как ?. Это гарантирует, что шестерки останутся в пределах диапазона печатаемых символов набора символов ASCII. Возврат каретки (CR) обозначается , а перевод строки (LF) — ; оба нужно было отправить по очереди, чтобы вернуть курсор в начало строки .$-CRLF

Sixel также включает в себя элементарную форму сжатия с использованием кодирования длин серий (RLE). Это достигается с помощью символа, за которым следует десятичное число повторений, а затем повторяется один шестизначный символ. Поскольку десятичные цифры и не могут быть действительными шестизначными данными, находящимися за пределами закодированного диапазона, кодировку легко идентифицировать и расширить обратно в программном обеспечении.!!

В «Шестистый режим» можно войти, отправив последовательность + . От p1 до p3 были необязательными параметрами настройки: p1 определял соотношение сторон (устарело в пользу p3), p2 - интерпретацию цвета нулей, а p3 - простые параметры размера сетки. + — это стандартная « строка управления устройством » DEC, или DCS, которая использовалась для включения или выключения ряда специальных функций в оборудовании DEC. «q» — это шестизначный идентификатор. [a] Данные Sixel затем следовали за q. Последовательность «String Terminator» + снова вернула устройство в нормальный символьный режим.ESCPp1;p2;p3;qESCPESC\

Для печати шестизначные числа отправляются на принтер, декодируются обратно в двоичный формат и отправляются непосредственно на шесть контактов печатающей головки. Единственная сложность заключалась в расширении RLE во внутренний буфер печати. Отображение на терминале несколько сложнее. На терминалах, поддерживающих графику, графическая система ReGIS использовалась для непосредственного рисования шестизначного шаблона в растровом изображении экрана. Это было сделано на высокой скорости путем сохранения растровых рисунков в виде глифа и последующего их копирования .

При использовании для определения пользовательских наборов символов формат был почти идентичен, хотя escape-коды изменились. С точки зрения данных, единственным существенным отличием является замена отдельного CR/LF одним файлом /. Например, в серии VT300 глифы символов из 80 столбцов имели ширину 15 пикселей и высоту 12, что означает, что символ можно было определить, отправив в общей сложности 30 шестерок.

Цвет также поддерживается с использованием символа, за которым следует число, относящееся к одному из нескольких регистров цвета , которые различаются от устройства к устройству. Цвета в регистрах определяются с использованием значений RGB или HLS в особом формате DEC. Чтобы создать цветное изображение на принтере, строка из шести чисел отправляется несколько раз, каждый из которых представляет одну битовую плоскость из цветов на основе регистров на терминалах (обычно 2 или 4 бита). Поскольку возможности оборудования сильно различаются, цветной шестиугольный рисунок можно вывести только на целевые устройства. Неграфические терминалы обычно игнорируют шестизначные escape-последовательности.#

Образец

Пример кода Sixel с надписью «HI» отображается в xterm с эмуляцией VT340 .
<ESC>Пк #0;2;0;0;0#1;2;100;100;0#2;2;0;100;0 #1~~@@vv@@~~@@~~$ #2??}}ГГ}}??}}??- #1!14@ <ESC>\

В приведенном выше примере выполняется вход в режим шестизначий, устанавливаются три регистра цвета, а затем используются эти регистры для рисования шестизначных чисел в этих цветах. Это #0;2;0;0;0интерпретируется как «установить регистр цвета 0, использовать режим 2 (режим RGB), установить R, G и B на 0%». Это устанавливает цвет 0 на черный, а следующие команды устанавливают регистр 1 на желтый (100%, 100%, 0%) и регистр 2 на зеленый (0%, 100%, 0%). В отличие от большинства современных систем, которые присваивают каждому цветовому каналу 8-битное значение (0–255), режим RGB основан на «интенсивности» каждого канала от 0% до 100%.

В следующих строках данных выберите цвет: желтый для первой и третьей и зеленый для середины, затем нарисуйте шестерки. Последняя строка показывает используемый RLE, что означает «повторить @( 0b100000) 14 раз». Конечный результат имеет размер 14 на 7 пикселей, поэтому последняя строка просто повторяется 0b10000014 раз, чтобы заполнить последнюю строку. $в конце строки означает, что следующая строка будет напечатана поверх текущей строки, а -означает, что следующая строка представляет собой новую строку из шести знаков.

Примечания

  1. ^ Строчная буква «p» была идентификатором ReGIS.

Смотрите также

Рекомендации

Внешние ссылки