444 lines
19 KiB
HTML
444 lines
19 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||
<html>
|
||
<head>
|
||
<title>photo</title>
|
||
</head>
|
||
<body>
|
||
|
||
<h1>photo</h1>
|
||
|
||
<p>Встроенный тип полноцветных изображений Tk.</p>
|
||
|
||
<h2><a name="СИНТАКСИС"></a>СИНТАКСИС</h2>
|
||
|
||
<pre>
|
||
<strong>image create photo</strong> ?<em>имя</em>? ?<em>параметры</em>?
|
||
</pre>
|
||
|
||
<h2><a name="ОПИСАНИЕ"></a>ОПИСАНИЕ</h2>
|
||
|
||
<p>Пиксели изображения типа <strong>photo</strong> могут быть
|
||
любого цвета, а также могут быть прозрачными. При сохранении
|
||
изображений этого типа каждый пиксель кодируется 24 битами; при
|
||
выводе пиксела при необходимости используется приближение
|
||
(dithering). Закодированные данные могут быть представлены в
|
||
виде файла или строки, а также в виде C кода через процедурный
|
||
интерфейс. В настоящее время поддерживаются только форматы GIF и
|
||
PPM/PGM; однако в системе имеется интерфейс, облегчающий
|
||
добавление новых форматов изображений. Области, данные для
|
||
которых не представлены, при выводе изображения оказываются
|
||
прозрачными.</p>
|
||
|
||
<h2><a name="СОЗДАНИЕ_ИЗОБРАЖЕНИЙ_ТИПА_PHOTO"></a>СОЗДАНИЕ ИЗОБРАЖЕНИЙ ТИПА photo</h2>
|
||
|
||
<p>Как и все остальные изображения, изображения типа photo
|
||
создаются командой <a href="image.html#create"><strong>image
|
||
create</strong></a>. Команда поддерживает следующие параметры:
|
||
|
||
<dl>
|
||
<dt><strong>-channel</strong> <em>идКанала</em></dt>
|
||
|
||
<dd>Параметр задает имя канала, открытого для чтения, по
|
||
которому должно поступить изображение типа photo. Формат
|
||
данных в канале должен быть таким, для которого существует
|
||
соответствующая программа чтения данных из файла или
|
||
канала.</dd>
|
||
|
||
<dt><strong>-data</strong> <em>строка</em></dt>
|
||
|
||
<dd>Задает содержимое изображения в виде строки. Формат данных в
|
||
строке должен быть таким, для которого существует
|
||
соответствующая программа чтения данных из строки. Если заданы
|
||
оба параметра <strong>-data</strong> и
|
||
<strong>-file</strong>, то параметр <strong>-file</strong>
|
||
подавляет значение параметра
|
||
<strong>-data</strong>.</dd>
|
||
|
||
<dt><strong>-format</strong> <em>имя-формата</em></dt>
|
||
|
||
<dd>Задает имя файла, содержащего описание формата данных,
|
||
указанных параметрами <strong>-data</strong> или
|
||
<strong>-file</strong>.</dd>
|
||
|
||
<dt><strong>-file</strong> <em>имя</em></dt>
|
||
|
||
<dd>Задает имя файла, содержащего данные для изображения типа
|
||
photo. Формат файла должен быть таким, для которого существует
|
||
соответствующая программа чтения данных из файла или
|
||
канала.</dd>
|
||
|
||
<dt><strong>-gamma</strong> <em>значение</em></dt>
|
||
|
||
<dd>Указывает на то, что распределение цветов для вывода данного
|
||
изображения в окне должно быть исправлено для нелинейного
|
||
дисплея с помощью показателя экспоненты
|
||
<strong>gamma</strong>. (В большинстве CRT интенсивность
|
||
вывода является показательной функцией введенного значения,
|
||
что обеспечивает качественное приближение;
|
||
<strong>gamma</strong> это показатель экспоненты, его значение
|
||
обычно близко к "2"). Указанное значение должно быть
|
||
положительным. По умолчанию параметр имеет значение
|
||
"1" (коррекция не производится). Значения, большие
|
||
единицы, осветляют изображение, меньшие единицы делают его
|
||
темнее.</dd>
|
||
|
||
<dt><strong>-height</strong> <em>число</em></dt>
|
||
|
||
<dd>Задает высоту изображения в пикселах. Этот параметр
|
||
оказывается полезным, в первую очередь, в ситуациях, когда
|
||
пользователь строит изображение по частям. Значение ноль
|
||
(принятое по умолчанию) обеспечивает возможность вертикального
|
||
растяжения или сжатия изображения в соответствии с его
|
||
содержимым.</dd>
|
||
|
||
<dt><strong>-palette</strong> <em>спец-палитры</em></dt>
|
||
|
||
<dd>Задает разрешение цветов выделенного изображению и
|
||
число используемых цветов из палитр окон размещения
|
||
изображения. Строка параметра спец-палитры может представлять
|
||
собой либо одно десятичное число, задающее число используемых
|
||
оттенков серого цвета, либо три десятичных числа, разделенных
|
||
наклонными косыми чертами (/), задающих число используемых
|
||
оттенков красного, зеленого и голубого цветов. Если строка
|
||
состоит из одного десятичного числа, то будет выводиться
|
||
монохромное изображение (оттенками серого цвета).</dd>
|
||
|
||
<dt><strong>-width</strong> <em>число</em></dt>
|
||
|
||
<dd>Задает ширину изображения в пикселах. Этот параметр
|
||
оказывается полезным, в первую очередь, в ситуациях, когда
|
||
пользователь строит изображение по частям. Значение ноль
|
||
(принятое по умолчанию) обеспечивает возможность
|
||
горизонтального растяжения или сжатия изображения в
|
||
соответствии с его содержимым.</dd>
|
||
</dl>
|
||
|
||
<h2><a name="КОМАНДА_IMAGE"></a>КОМАНДА IMAGE</h2>
|
||
|
||
<p>При создании изображения типа <strong>photo</strong>
|
||
Tk создает также новую команду, имя которой совпадает с именем
|
||
вновь созданного изображения. С помощью этой команды можно
|
||
выполнять различные операции над изображением. Она имеет
|
||
следующий общий вид:</p>
|
||
|
||
|
||
<pre>
|
||
imageName параметр ?арг арг ...?
|
||
</pre>
|
||
|
||
<p><em>Параметр</em> и <em>арг</em>ументы уточняют поведение
|
||
команды.</p>
|
||
|
||
<p>Параметры, приводящие к дописыванию данных в изображение,
|
||
обычно приводят к увеличению размеров изображения, за
|
||
исключением случаев, когда пользователь задал ненулевые значения
|
||
параметров конфигурации <strong>-width</strong> и/или
|
||
<strong>-height</strong>; в последнем случае ширина и/или высота
|
||
изображения не изменяются.</p>
|
||
|
||
<p>Изображения типа photo поддерживают следующие команды:</p>
|
||
|
||
<dl>
|
||
<dt><em>имяИзображения</em> <strong>blank</strong></dt>
|
||
|
||
<dd>Очищает изображение, т.е. устанавливает, что в изображении
|
||
нет данных, поэтому при выводе оно оказывается прозрачным, и
|
||
на его месте видно содержимое содержащего его окна.</dd>
|
||
|
||
<dt><em>имяИзображения</em> <strong>cget</strong>
|
||
<em>параметр</em></dt>
|
||
|
||
<dd>Возвращает текущее значение параметра конфигурации с именем
|
||
<em>параметр</em>. <em>Параметр</em> может быть любым из
|
||
параметров команды <strong>image create photo</strong>.</dd>
|
||
|
||
<dt><em>имяИзображения</em> <strong>configure</strong>
|
||
?<em>параметр</em>? ?<em>значение параметр значение
|
||
...</em>?</dt>
|
||
|
||
<dd>Запрашивает значения параметров конфигурации изображения или
|
||
изменяет их. Если <em>параметр</em> не указан, то возвращает
|
||
список, содержащий значения всех допустимых в
|
||
<em>имениПути</em> параметров (формат списка описан в
|
||
<strong>Tk_ConfigureInfo</strong>). Если параметр задан, а его
|
||
новое значение - нет, то команда возвращает часть полного
|
||
списка, относящуюся к указанному параметру. Если заданы одна
|
||
или несколько пар параметр-значение, то указанным параметрам
|
||
примитива присваиваются новые значения, а команда возвращает
|
||
пустую строку. Параметр может быть любым из параметров команды
|
||
<strong>image create photo</strong>.</dd>
|
||
|
||
<dt><em>имяИзображения</em> <strong>copy</strong>
|
||
<em>исхИзобр</em> ?<em>параметр значение(я) ...</em>?</dt>
|
||
|
||
<dd><p>Копирует область изображения с именем <em>исхИзобр</em>
|
||
(которое должно быть изображением типа <em>photo</em>) в
|
||
изображение с именем <em>имяИзображения</em>, возможно с
|
||
растяжением пикселей и/или subsampling. Если параметры не
|
||
заданы, то команда копирует в <em>имяИзображения</em> все
|
||
исходное изображение, начиная с точки с координатами (0,0) в
|
||
изображении <em>имяИзображения</em>. В команде могут быть
|
||
заданы следующие параметры:</p>
|
||
|
||
<dl>
|
||
<dt> <strong>-from</strong> <em>x1 y1 x2 y2</em></dt>
|
||
|
||
<dd>Задает предназначенную для копирования прямоугольную
|
||
область в исходном изображении. Точки с координатами
|
||
(<em>x1</em>,<em>y1</em>) и (<em>x2</em>,<em>y2</em>)
|
||
задают противоположные углы прямоугольника. Если параметры
|
||
<em>x2</em> и<em>y2</em> не заданы, то их значениями по
|
||
умолчанию являются координаты нижнего правого угла
|
||
исходного изображения. В копируемую область включаются
|
||
левая и верхняя стороны прямоугольника, но не его нижняя и
|
||
правая стороны. Значением параметра <strong>-from</strong>
|
||
по умолчанию является все исходное изображение.</dd>
|
||
|
||
<dt><strong>-to</strong> <em>x1 y1 x2 y2</em></dt>
|
||
|
||
<dd>Задает прямоугольную подобласть в изображении
|
||
<em>имяИзображения</em>. Точки с координатами
|
||
(<em>x1</em>,<em>y1</em>) и (<em>x2</em>,<em>y2</em>)
|
||
задают противоположные углы прямоугольника. Если
|
||
координаты <em>x2</em> и <em>y2</em> не заданы, то их
|
||
значениями по умолчанию являются значения координат
|
||
(<em>x1</em>,<em>y1</em>), к которым прибавлены размеры
|
||
исходной области (после subsampling??? и увеличения, если
|
||
они требуются). Если координаты <em>x2</em> и <em>y2</em>
|
||
заданы, то копируемая область будет при необходимости
|
||
воспроизведена несколько раз для замещения всего
|
||
отведенного прямоугольника.</dd>
|
||
|
||
<dt><strong>-shrink</strong></dt>
|
||
|
||
<dd>Указывает на то, что размер отведенной области должен
|
||
быть при необходимости уменьшен таким образом, чтобы
|
||
копируемый прямоугольник оказался в ее правом нижнем
|
||
углу. Если пользователь задал ненулевые значения
|
||
параметров конфигурации <strong>-width</strong> или
|
||
<strong>-height</strong> , то параметр
|
||
<strong>-shrink</strong> не окажет влияния на ширину или
|
||
высоту соответственно.</dd>
|
||
|
||
<dt><strong>-zoom</strong> <em>x y</em></dt>
|
||
|
||
<dd>Задает необходимость растяжения копируемой области с
|
||
коэффициентом <em>x</em> в X-направлении и с коэффициентом
|
||
<em>y</em> в Y-направлении. При задании этого параметра
|
||
каждый пиксел исходного изображения при копировании будет
|
||
представлен в виде прямоугольника x * y пикселей одного
|
||
цвета. Оба числа x и y должны быть положительными.</dd>
|
||
|
||
<dt><strong>-subsample</strong> <em>x y</em></dt>
|
||
|
||
<dd>Указывает на необходимость уменьшения исходного
|
||
изображения за счет использования только каждого x-го
|
||
пикселя в X-направлении и каждого y-го пикселя в
|
||
Y-направлении. Отрицательные значения параметров приводят
|
||
к отражению в соответствующем направлении. Если параметр
|
||
<em>y</em> не задан, то его значение по умолчанию
|
||
совпадает со значением параметра <em>x</em>.</dd>
|
||
</dl>
|
||
</dd>
|
||
|
||
<dt><em>имяИзображения</em> <strong>get</strong> <em>x y</em></dt>
|
||
|
||
<dd>Возвращает цвет пиксела с координатами (<em>x,y</em>) в
|
||
указанном изображении в виде списка из трех целых чисел в
|
||
промежутке от 0 до 255, описывающих соответственно его
|
||
красную, зеленую и голубую составляющие.</dd>
|
||
|
||
<dt><em>имяИзображения</em> <strong>put</strong> <em>данные</em>
|
||
?<strong>-to</strong> <em>x1 y1 x2 y2</em>?</dt>
|
||
|
||
<dd>Устанавливает цвета пикселей, заданные параметром
|
||
<em>данные</em>. Этот параметр используется для формирования
|
||
двумерного массива пикселей, который затем копируется в
|
||
изображение <em>имяИзображения</em>. Данные представляют собой
|
||
список строк, идущих сверху вниз, каждая из которых является
|
||
списком цветов, идущих слева направо. Каждый цвет задается
|
||
именем (например, <strong>blue</strong>) или в
|
||
шестнадцатеричном виде (например, <strong>#2376af</strong>). С
|
||
помощью параметра <strong>-to</strong> можно отвести область
|
||
для размещения массива. Если заданы только координаты
|
||
<em>x1</em> и <em>y1</em>, то верхним левым углом отведенной
|
||
области является точка с координатами
|
||
(<em>x1</em>,<em>y1</em>), а размеры области совпадают с
|
||
размерами массива. Если указаны все четыре координаты, то они
|
||
задают противоположные углы отведенного прямоугольника, и
|
||
содержимое массива будет при необходимости повторено в X- и
|
||
Y-направлениях для замещения всего отведенного
|
||
прямоугольника.</dd>
|
||
|
||
<dt><em>имяИзображения</em> <strong>read</strong> <em>имяфайла</em>
|
||
?<em>параметр значение(я) ...</em>?</dt>
|
||
|
||
<dd><p>Читает данные из файла с именем <em>имяфайла</em> в
|
||
изображение с именем <em>имяИзображения</em>. Выполнение
|
||
команды начинается с просмотра списка программ обработки
|
||
форматов файлов изображений в поисках программы, способной
|
||
интерпретировать данные в указанном файле; затем эти данные
|
||
читаются из файла в изображение с именем
|
||
<em>имяИзображения</em>. Команда может иметь следующие
|
||
параметры:</p>
|
||
|
||
<dl>
|
||
<dt><strong>-format</strong> <em>имя-формата</em></dt>
|
||
|
||
<dd>Задает формат данных в файле с именем <em>имяфайла</em>.
|
||
Точнее говоря, при поиске в списке программ обработки
|
||
будут просматриваться только те программы, имена которых
|
||
начинаются с <em>имени-формата</em>.</dd>
|
||
|
||
<dt><strong>-from</strong> <em>x1 y1 x2 y2</em></dt>
|
||
|
||
<dd>Задает прямоугольную подобласть в изображении,
|
||
описываемом данными файла, которую необходимо скопировать
|
||
в изображение с именем <em>имяИзображения</em>. Если
|
||
заданы только параметры <em>x1</em> и <em>y1</em>, то они
|
||
задают координаты левого верхнего угла подобласти, а ее
|
||
правый нижний угол совпадает с правым нижним углом всего
|
||
изображения в файле. Если заданы все четыре координаты, то
|
||
они задают два противоположных угла подобласти. Если этот
|
||
параметр не задан, то по умолчанию копируется все
|
||
изображение.</dd>
|
||
|
||
<dt><strong>-shrink</strong></dt>
|
||
|
||
<dd>Если присутствует этот параметр, то размер изображения с
|
||
именем <em>имяИзображения</em> при необходимости
|
||
уменьшается таким образом, чтобы прямоугольник, отведенный
|
||
под содержимое файла изображения, находился в правом
|
||
нижнем углу изображения с именем
|
||
<em>имяИзображения</em>. Если пользователь задал ненулевые
|
||
значения параметров конфигурации <strong>-width</strong>
|
||
или <strong>-height</strong>, то параметр
|
||
<strong>-shrink</strong> не будет оказывать влияния
|
||
соответственно на ширину или высоту изображения.</dd>
|
||
|
||
<dt><strong>-to</strong> <em>x y</em></dt>
|
||
|
||
<dd>Задает координаты верхнего левого угла прямоугольника в
|
||
изображении с именем <em>имяИзображения</em>, отводимого
|
||
под данные из файла. По умолчанию параметр имеет значение
|
||
(0,0).</dd>
|
||
</dl>
|
||
</dd>
|
||
|
||
<dt><em>имяИзображения</em> <strong>redither</strong></dt>
|
||
|
||
<dd>При выводе изображений типа photo используется алгоритм
|
||
приближения (dithering) , который распространяет дискретные
|
||
ошибки с пиксела на его соседей. Если данные для изображения
|
||
<em>имяИзображения</em> поставляются частями, то результат
|
||
приближения может быть не вполне корректным. Обычно эта
|
||
некорректность на взгляд незаметна, однако при серьезных
|
||
нарушениях с помощью данной команды можно пересчитать
|
||
необходимые приближения в каждом окне, в котором выводится
|
||
данное изображение.</dd>
|
||
|
||
<dt><em>имяИзображения</em> <strong>write</strong> <em>имяфайла</em>
|
||
?<em>параметр значение(я) ...</em>?</dt>
|
||
|
||
<dd><p>Записывает изображение <em>имяИзображения</em> в файл с
|
||
именем <em>имяфайла</em>. Может иметь следующие параметры:</p>
|
||
|
||
<dl>
|
||
<dt><strong>-format</strong> <em>имя-формата</em></dt>
|
||
|
||
<dd>Задает имя программы обработки файла изображения, которую
|
||
следует использовать при записи данных в файл. Точнее
|
||
говоря, данная подкоманда ищет первую программу обработки
|
||
в списке, начало имени которой совпадает с началом
|
||
имени-формата и которая способна записывать данные в
|
||
файл. Если этот параметр не задан, то эта подкоманда
|
||
использует первую программу обработки, способную
|
||
записывать данные в файл изображения.</dd>
|
||
|
||
<dt><strong>-from</strong> <em>x1 y1 x2 y2</em></dt>
|
||
|
||
<dd>Задает прямоугольную область в изображении с именем
|
||
<em>имяИзображения</em>, которую следует переписать в файл
|
||
изображения. Если заданы только значения <em>x1</em> и
|
||
<em>y1</em>, то они задают верхний левый угол
|
||
прямоугольника, а его нижний правый угол совпадает с
|
||
нижним правым углом изображения. Если заданы все четыре
|
||
координаты, то они задают противоположные углы
|
||
прямоугольника. Если параметр не задан, то по умолчанию
|
||
копируется все изображение.</dd>
|
||
</dl>
|
||
</dd>
|
||
</dl>
|
||
|
||
<h2><a name="ФОРМАТЫ_ИЗОБРАЖЕНИЙ"></a>ФОРМАТЫ ИЗОБРАЖЕНИЙ</h2>
|
||
|
||
<p>При создании программ обработки изображений типа photo
|
||
предусмотрена возможность легкого добавления новых форматов
|
||
файлов изображений. Все программы занесены в список. Добавление
|
||
программы в список происходит в результате выполнения команды
|
||
<strong>Tk_CreatePhotoImageFormat</strong>. В стандартном
|
||
дистрибутиве Tk содержатся программы обработки для форматов
|
||
PPM/PGM и GIF, которые автоматически заносятся в список при
|
||
инициализации.</p>
|
||
|
||
<p>При чтении файла изображения или обработке строки данных,
|
||
заданной в параметре конфигурации <strong>-data</strong>,
|
||
команда <strong>photo image</strong> просматривает программы
|
||
обработки одну за другой, пока не найдется такая, которая
|
||
утверждает, что она способна читать данные из файла или
|
||
строки. Результатом поиска обычно бывает правильная программа
|
||
обработки. В противном случае пользователь может задать имя
|
||
программы обработки с помощью параметра
|
||
<strong>-format</strong>.</p>
|
||
|
||
<p>На самом деле команда <strong>photo image</strong>
|
||
просматривает только те программы обработки, имена которых
|
||
начинаются со строки, заданной параметром
|
||
<strong>-format</strong> (при сравнении регистр не
|
||
учитывается). Если, например, пользователь указал
|
||
<strong>-format gif</strong>, то могут выполняться программы
|
||
обработки GIF87 или GIF89, но не программа JPEG (если такие
|
||
программы были внесены в список).</p>
|
||
|
||
<p>При записи изображения в файл параметр <strong>-format</strong>
|
||
обрабатывается несколько другим способом: строка, являющаяся его
|
||
значением, должна начинаться с полного имени запрашиваемой
|
||
программы обработки, за которым может следовать дополнительная
|
||
информация. Эта дополнительная информация может, например,
|
||
сообщать программе, какую из версий формата следует
|
||
использовать.</p>
|
||
|
||
<h2><a name="РАСПРЕДЕЛЕНИЕ_ЦВЕТОВ"></a>РАСПРЕДЕЛЕНИЕ ЦВЕТОВ</h2>
|
||
|
||
<p>При выводе изображения типа photo в окно команда
|
||
<strong>photo image</strong> отводит цвета и,
|
||
при необходимости, возмущает изображение, заменяя отсутствующие
|
||
цвета доступными. Выделяемые цвета образуют куб: число возможных
|
||
составных цветов представляет собой произведение чисел оттенков
|
||
красного, зеленого и голубого цветов.</p>
|
||
|
||
<p>Обычно выбор числа цветов определяется глубиной окна. Например,
|
||
в 8-битовом окне PseudoColor команда <strong>photo
|
||
image</strong> пытается отвести семь оттенков красного, семь
|
||
оттенков зеленого и четыре оттенка голубого, всего 198 составных
|
||
цветов. Для 1-битового окна StaticGray (монохромного) команда
|
||
отводит два цвета, белый и черный. Для 24-битовых окон
|
||
DirectColor или TrueColor команда отводит по 256 оттенков
|
||
каждого из трех цветов. Если не удается отвести все цвета, то
|
||
команда <strong>photo image</strong> уменьшает число оттенков
|
||
каждого простого цвета и производит новую попытку
|
||
размещения.</p>
|
||
|
||
<p>Пользователь может частично управлять выбором числа цветов с
|
||
помощью параметра конфигурации <strong>-palette</strong>. При
|
||
использовании этого параметра в нем задается максимальное число
|
||
используемых оттенков каждого из простых цветов. Кроме того с
|
||
помощью этого параметра можно потребовать представления
|
||
изображения оттенками серого цвета даже в цветном окне, задав
|
||
одно число вместо трех, разделенных наклонными чертами.</p>
|
||
</body>
|
||
</html>
|
||
|
||
|
||
|