stringtranslate.com

Прозрачность (графика)

GIF -анимация упаковки аполлонической сферы с прозрачным фоном

Прозрачность компьютерной графики возможна в ряде форматов файлов . Термин « прозрачность » используется разными людьми по-разному, но в самом простом случае это «полная прозрачность», то есть нечто совершенно невидимое. Только часть изображения должна быть полностью прозрачной, иначе ничего не будет видно. Более сложным является «частичная прозрачность» или «полупрозрачность» [ нужна ссылка ] , когда достигается эффект частичной прозрачности графики, как и цветного стекла. Поскольку в конечном итоге напечатанная страница, экран компьютера или телевизора может иметь только один цвет в каждой точке, частичная прозрачность всегда моделируется на некотором уровне путем смешивания цветов . Существует много разных способов смешивания цветов, поэтому в некоторых случаях прозрачность неоднозначна.

Кроме того, прозрачность часто является «дополнительным» для графического формата, и некоторые графические программы игнорируют прозрачность.

Анимированный PNG ( APNG ) с 8-битной прозрачностью

Форматы растровых файлов, поддерживающие прозрачность, включают GIF , PNG , BMP , TIFF , TGA и JPEG 2000 либо через прозрачный цвет , либо через альфа-канал .

Большинство векторных форматов неявно поддерживают прозрачность, поскольку они просто избегают размещения каких-либо объектов в заданной точке. Сюда входят EPS и WMF . Для векторной графики это не совсем прозрачно, но требует такого же тщательного программирования, как и прозрачность в растровых форматах.

Более сложные векторные форматы могут допускать комбинации прозрачности между элементами изображения, как и выше. Сюда входят SVG и PDF .

Подходящий редактор растровой графики показывает прозрачность с помощью специального рисунка, например, шахматного узора.

Прозрачные пиксели

Это изображение имеет двоичную прозрачность (некоторые пиксели полностью прозрачны, другие полностью непрозрачны). Он может быть прозрачным на любом фоне, потому что он монохромный.

Одна запись цвета в палитре одного изображения GIF или PNG может быть определена как «прозрачный», а не как реальный цвет. Это означает, что когда декодер встречает пиксель с этим значением, он отображается в цвете фона той части экрана, где размещено изображение, даже если он меняется попиксельно, как в случае с фоновым изображением .

Приложения включают в себя:

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

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

Краевые ограничения прозрачных пикселей

Это изображение имеет двоичную прозрачность. Однако он в оттенках серого со сглаживанием , поэтому хорошо смотрится только на белом фоне. На другом фоне получится эффект «ореолов» оттенков серого.

Края символов и других изображений с прозрачным фоном не должны иметь оттенков серого : они обычно используются для промежуточных цветов между цветом буквы/изображения и цветом фона, обычно оттенки серого являются промежуточными между черной буквой и цветом фона. белый фон. Однако, например, на красном фоне промежуточные цвета будут темно-красными. Пиксели с серыми краями дадут некрасивый и нечеткий результат. Для переменного цвета фона не существует подходящих фиксированных промежуточных цветов.

Частичная прозрачность по альфа-каналам

Это изображение имеет частичную прозрачность (254 возможных уровня прозрачности от полностью прозрачного до полностью непрозрачного). Он может быть прозрачным на любом фоне, несмотря на сглаживание.

Некоторые форматы изображений, такие как PNG и TIFF, также допускают частичную прозрачность через альфа-канал, что решает проблему ограничения краев. Вместо того, чтобы каждый пиксель был прозрачным или непрозрачным, для него можно установить 254 уровня частичной прозрачности, что позволяет части фонового изображения проявляться сквозь изображение переднего плана.

Основное использование частичной прозрачности — создание «мягких краев» графики, чтобы они сливались с фоном. [1] См. также монохромный режим или с оттенками серого и сглаживанием . Частичную прозрачность также можно использовать, чтобы сделать изображение менее заметным, например водяной знак или другой логотип; или сделать что-то прозрачным, например призрачное видение в видеоигре. Анимация альфа-канала в программе редактирования изображений может обеспечить плавные переходы между различными изображениями.

Процесс объединения частично прозрачного цвета с его фоном («композиция») часто нечетко определен, и результаты не во всех случаях могут быть одинаковыми. Например, если используется цветокоррекция, следует ли комбинировать цвета до или после цветокоррекции?

На этом изображении показаны результаты наложения каждого из приведенных выше прозрачных изображений PNG на цвет фона #6080A0. Обратите внимание на серую окантовку букв среднего изображения.
Это показывает, как будут выглядеть приведенные выше изображения, например, при их редактировании. Серо-белый узор в клетку будет преобразован в прозрачность.

Прозрачность путем обрезки пути

Альтернативный подход к полной прозрачности — использование обтравочного контура . Обтравочный контур — это просто фигура или контур, который используется вместе с другой графикой. Все, что находится внутри пути, видно, а все, что находится за его пределами, невидимо. Путь по своей сути является векторным, но потенциально может использоваться для маскировки как векторных, так и растровых данных. Обтравочные контуры в основном используются в файлах PostScript.

Композиционные расчеты

Хотя некоторые спецификации прозрачности расплывчаты, другие могут содержать математические подробности того, как следует скомпоновать два цвета. Это довольно простой пример того, как могут работать композитные вычисления, давать ожидаемые результаты, а также преподносить сюрпризы.

В этом примере необходимо объединить два цвета в оттенках серого. Значениями оттенков серого считаются числа от 0,0 (белый) до 1,0 (черный). Подчеркну: это только одно возможное правило прозрачности. Если вы работаете с прозрачностью, проверьте правила, используемые в вашей ситуации.

Цвет в точке, где должны быть объединены цвета G1 и G2, равен ( G1 + G2 ) / 2. Некоторые последствия этого:

( ( G1 + G2 ) / 2 + G3 ) / 2 = G1 / 4 + G2 / 4 + G3 / 2( G1 + ( G2 + G3 ) / 2 ) / 2 = G1 / 2 + G2 / 4 + G3 / 4

Это важно, так как означает, что при объединении трех и более объектов по этому правилу прозрачности окончательный цвет очень сильно зависит от порядка выполнения расчетов.

Хотя формула проста, она может быть не идеальной. Человеческое восприятие яркости нелинейно — мы не обязательно считаем, что значение серого 0,5 находится на полпути между черным и белым. Такие детали могут не иметь значения, когда прозрачность используется только для смягчения краев, но в более сложных проектах это может быть важно. Большинству людей, серьезно работающих с прозрачностью, необходимо видеть результаты, и они могут экспериментировать с цветами или (где это возможно) с алгоритмом, чтобы получить нужные им результаты.

Эту формулу можно легко обобщить для цвета RGB или цвета CMYK , применив ее к каждому каналу отдельно. Например, финал red = ( R1 + R2 ) / 2. Но его нельзя применить ко всем цветным моделям. Например, лабораторный цвет дал бы удивительные результаты.

Альтернативная модель заключается в том, что в каждой точке каждого элемента, который необходимо объединить для обеспечения прозрачности, имеется соответствующий цвет и непрозрачность от 0 до 1. Для каждого цветового канала вы можете работать с этой моделью: если канал с интенсивностью и G2непрозрачностью T2перекрывает канал с интенсивностью G1и непрозрачностью T1результатом будет канал с интенсивностью, равной (1 - T2) * G1 + G2, и непрозрачностью 1 - (1 - T2) * (1 - T1). Перед компоновкой каждый канал должен быть умножен на соответствующее значение альфа (так называемая предварительно умноженная альфа ). Спецификация файла SVG использует этот тип смешивания, и это одна из моделей, которые можно использовать в PDF.

Альфа-каналы могут быть реализованы таким образом, где альфа-канал обеспечивает уровень непрозрачности, который одинаково применяется ко всем другим каналам. Чтобы работать с приведенной выше формулой, непрозрачность необходимо масштабировать в диапазоне от 0 до 1, независимо от ее внешнего представления (часто от 0 до 255, если используются 8-битные выборки, такие как «RGBA»).

Прозрачность в PDF

Начиная с версии 1.4 стандарта PDF ( Adobe Acrobat версии 5), поддерживается прозрачность (в том числе полупрозрачность). Прозрачность PDF-файлов позволяет создателям достигать различных эффектов, в том числе добавлять тени к объектам, делать объекты полупрозрачными и смешивать объекты друг с другом или с текстом. PDF поддерживает множество различных режимов наложения , а не только наиболее распространенный метод усреднения, а правила объединения множества перекрывающихся объектов позволяют выбирать (например, смешивается ли группа объектов перед смешиванием с фоном или смешивается ли каждый объект по очереди). на задний план).

Прозрачность PDF — очень сложная модель, ее первоначальная спецификация Adobe занимала более 100 страниц. Ключевой источник сложностей заключается в том, что смешивание объектов с разными цветовыми пространствами может быть сложным и подверженным ошибкам, а также вызывать проблемы совместимости . Прозрачность в PDF была разработана так, чтобы не вызывать ошибок в программах просмотра PDF, которые ее не понимают — они просто отображали бы все элементы как полностью непрозрачные. Однако это был палка о двух концах, поскольку пользователи старых программ просмотра, PDF-принтеров и т. д. могли увидеть или распечатать что-то совершенно отличное от исходного дизайна.

Тот факт, что модель прозрачности PDF настолько сложна, означает, что она плохо поддерживается. Это означает, что у RIP и принтеров часто возникают проблемы с печатью PDF-файлов с прозрачностью. Решением этой проблемы является либо растеризация изображения, либо применение выравнивания векторной прозрачности к PDF-файлу. Однако выравнивание векторной прозрачности чрезвычайно сложно и поддерживается лишь несколькими специализированными пакетами.

Прозрачность в PostScript

Язык PostScript имеет ограниченную поддержку полной (не частичной) прозрачности в зависимости от уровня PostScript. Частичная прозрачность доступна с расширением pdfmark [2] , доступным во многих реализациях PostScript.

1-й уровень

PostScript уровня 1 обеспечивает прозрачность двумя способами:

Уровень 2

PostScript уровня 2 не добавляет никаких специальных функций прозрачности. Однако с помощью шаблонов произвольную графику можно рисовать через маски, определенные любыми векторными или текстовыми операциями. Однако это сложно реализовать. Кроме того, слишком часто это достигало пределов реализации, и лишь немногие прикладные программы когда-либо предлагали эту технику.

Уровень 3

PostScript уровня 3 добавляет дополнительную опцию прозрачности для любого растрового изображения. Можно применить прозрачный цвет или диапазон цветов; или можно использовать отдельную 1-битную маску для обеспечения альфа-канала.

Инкапсулированный PostScript

Файлы EPS содержат PostScript, который может быть уровня 1, 2 или 3 и использовать вышеуказанные функции. Более тонкая проблема возникает с предварительным просмотром файлов EPS, который обычно используется для отображения файла EPS на экране. Существуют эффективные методы настройки прозрачности при предварительном просмотре. Например, при предварительном просмотре TIFF может использоваться альфа-канал TIFF. Однако многие приложения не используют эту информацию о прозрачности и поэтому отображают предварительный просмотр в виде прямоугольника. Полупатентованный метод, впервые примененный в Photoshop и принятый в ряде приложений допечатной подготовки, заключается в сохранении контура обрезки в стандартном месте EPS и использовании его для отображения.

Кроме того, немногие программы, генерирующие предварительный просмотр EPS, генерируют информацию о прозрачности в предварительном просмотре.

Некоторые программы пытались обойти эту проблему, рассматривая весь белый цвет в предварительном просмотре как прозрачный, но это также проблематично в тех случаях, когда некоторые белые цвета не прозрачны .

В последнее время стали появляться приложения, которые вообще игнорируют предварительный просмотр; поэтому они получают информацию о том, какие части предварительного просмотра следует рисовать, интерпретируя PostScript.

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

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

  1. ^ Крофт, Джефф. «Творческое использование прозрачности PNG в веб-дизайне». цифровые сети . Проверено 14 сентября 2020 г.
  2. ^ Adobe (02 октября 2005 г.). «Справочное руководство pdfmark» (PDF) . Проверено 12 августа 2009 г.