Кіріспе

Сурет файл форматы

PCX (PiCture eXchange) – АҚШ-тың Джорджия штатындағы Мариетта қаласында орналасқан, қазір құлап қалған ZSoft Corporation компаниясы әзірлеген сурет файл форматы. Бұл формат PC Paintbrush бағдарламасы үшін негізгі файл форматы болды және DOS жүйесінде кеңінен қолданылатын алғашқы бейнелеу стандарттарының біріне айналды. Бірақ қазіргі таңдағыда BMP, JPEG және PNG сияқты жетілдірілген сурет форматтарымен алмастырылды. PCX файлдары көбінесе 2 немесе 4 түстен бастап 16 және 256 түске дейінгі палитралық индекстелген суреттерді сақтайды, алайда бұл формат 24 биттік түсті суреттерді жазу мүмкіндігіне де ие.

PCX кескін пішімдері

PCX компьютерлік дисплей аппараттарының дамуының басында жасалған, ал оның қолдаған көптеген форматтары қазір қолданылмайды. Төмендегі кестеде ең көп қолданылатын PCX форматтарының тізімі келтірілген. Заманауи кескінді өңдеу бағдарламалары ескі аппараттық құрылғыларға сәйкес PCX файлдарын оқуға мүмкін болмайды. + Көп қолданылатын PCX кескін форматтары Бит тереңдігі Жазылымдар Түстер саны 4 1 Палитрадан 16 түс 8 1 Палитрадан 256 түс 8 1 256 сұр түс 4 4 16 мөлдірлік деңгейімен 4096 түс 8 3 16,7 миллион, 24 бит "шынайы түс" 8 4 256 мөлдірлік деңгейімен 16,7 миллион 1 1 2 түсті монохромды (1 Бит) (Win 3.1 Paintbrush) 1 4 16 түсті RGBi (4 Бит) 4 жазылымда (Win 3.1 Paintbrush) PCX-ті ACDSee, FastStone, GIMP, ImageMagick, IrfanView, LView, Netpbm, PaintShop Pro, Photoshop, Visio, PMview, XnView және GraphicConverter сияқты көптеген бейне өңдеу бағдарламалары қолдайды. FFmpeg 2.1.4 нұсқасы rgb24, rgb8, bgr8, rgb4 байт, bgr4 байт, сұр, pal8 және monob пиксел форматтарын кодтауға және декодтауға қабілетті. PCX-тің көп беттік нұсқасы бар, ол кейбір компьютерлік факс және құжат басқару бағдарламаларында dcx кеңейтіммен қолданылады. DCX файлы келесі PCX файлдар жиынтығын таныстыратын тақырыптан тұрады.

Кескін деректерінің макетін

PCX кескін деректері жоғарғыдан төменге қарай қатарларда немесе сканерлеу сызықтарында сақталады. Егер кескінде бірнеше жазықтық болса, олар қатар ішінде жазықтықтар бойынша сақталады, яғни 0-қатардағы барлық қызыл деректерден кейін 0-қатардағы барлық жасыл деректер, содан кейін барлық көк деректер, содан кейін альфа деректер орналасады. Бұл үлгі әрбір жол үшін келесі кестеде көрсетілгендей қайталанады:

+ PCX кескін деректері түс жазықтықтары бойынша реттелген 0-қатар Қызыл Қызыл Қызыл Қызыл Қызыл Қызыл Қызыл Қызыл Қызыл Жасыл Жасыл Жасыл Жасыл Жасыл Жасыл Жасыл Жасыл Жасыл Көк Көк Көк Көк Көк Көк Көк Көк Көк Альфа Альфа Альфа Альфа Альфа Альфа Альфа Альфа Альфа 1-қатар Қызыл Қызыл Қызыл Қызыл Қызыл Қызыл Қызыл Қызыл Қызыл Жасыл Жасыл Жасыл Жасыл Жасыл Жасыл Жасыл Жасыл Жасыл Көк Көк Көк Көк Көк Көк Көк Көк Көк Альфа Альфа Альфа Альфа Альфа Альфа Альфа Альфа Альфа 2-қатар т.б. Егер кескін пикселге 8 биттен аз болса, әрбір жол келесі жұп байт шекарасына дейін толтырылады. Мысалы, егер кескінде 1 биттік деректің 1 жазықтығы (монохромды) болса және ені 22 пиксел болса, әрбір жолдың ұзындығы 4 байт болады, әрбір жолда 32 бит болады, ал 10 биті пайдаланылмайды.

Кескін деректерін сығыстыру

PCX кескін деректері қарапайым жоғалтусыз сығылу алгоритмі (RLE) арқылы сығылады, ол бірдей мәндері бар үш немесе одан көп байттар тізбегін екі байттық жұпқа біріктіреді. Байттың ең маңызды екі биті берілген палитра индексі немесе түс мәнінің жалғыз пикселін, немесе бір мәнді білдіретін бірнеше пиксельді білдіретін RLE жұбын анықтау үшін қолданылады: Егер екі биті де 1 болса, байт орындалу ұзындығы ретінде қарастырылады. Бұл нақты орындалу ұзындығы үшін 6 бит қалдырады, ол 0-ден 63-қа дейінгі диапазонды құрайды. Кез келген басқа жағдайда, байт жалғыз пикселдік мән ретінде қарастырылады. Бұл #7 және #8 биттері бір уақытта 1-ге тең емес барлық мәндерді қалдырады. Бұл 192-ден төменгі барлық мәндерді бір байтқа кодтауға мүмкіндік береді. Екі ең маңызды битті флагтар ретінде пайдаланудың нәтижесінде, 192-ден 255-ке дейінгі пикселдік мәндер (олардың ең маңызды биті бұрыннан белгіленген) тіпті олар қатарынан бір немесе екі пиксел ғана кездессе де, RLE байт жұбында сақталуы керек, ал 0-ден 191-ге дейінгі түс индекстерін тікелей немесе RLE байт жұбында сақтауға болады (қайсысы кеңістік тұрғысынан тиімдірек болса); сондықтан палитра жазбаларын дұрыс сұрыптау арқылы нақты сығылу коэффициентін оңтайландыруға болады, бірақ бұл файл түс палитрасын басқа кескіндермен бөлісуі керек болған жағдайда мүмкін емес. Мысалы, палитраны палитраның 0-ден 191-ге дейінгі орындарында ең көп қолданылатын түстермен және палитраның қалған бөлігіне бөлінген ең сирек кездесетін түстермен оңтайландыруға болады. RLE алгоритмінің тағы бір кемшілігі – файлда бос орынға мүмкіндік беретін 0 ұзындығы бар бөліктерді сақтау мүмкіндігі. Бұл PCX файлдарын бастапқыда арналған процессорларда сәл жылдам декомпрессиялауға мүмкіндік берді. PCX сығылу алгоритміне процессордың өте аз қуаты немесе жады қажет, ол жобаланған кезде компьютерлік жүйелер үшін маңызды мәселе болды. Жаңа кескін форматтарында қолданылатын сығылу алгоритмдері, мысалы, фотосуреттерді және дитерленген немесе күрделі графикаларды сығылғанда тиімдірек.

Түстер палитрасы

PCX файлының бас жағында 16 түстік палитраға орын қарастырылған. 256 түсті VGA жабдығы қолжетімді болған кезде, PCX файлында палитраға жеткілікті орын болмады; тіпті бас жазбадан кейінгі 54 байт та жеткіліксіз болды. Осы мәселені шешу үшін палитра файлдың соңына, оның бар екенін растау үшін маркер байтымен бірге орналастырылды. Егер PCX файлы 256 түстік палитраны қамтитын болса, ол файлдың соңынан 768 байттан кейін табылады. Мұндай жағдайда палитраның алдындағы байттың мәні 12 (0x0C) болуы керек. Палитра RGB үштіктер тізбегі түрінде сақталады; оның қолданылатын ұзындығы кескіндегі түстер санымен анықталады. PCX палитрасындағы түс мәндері бейненің бит тереңдігіне қарамастан, әрқашан 8 биттік болады.