Как работает заливка в paint алгоритм
Многие обладатели персональных компьютеров зачастую сталкивались с таким программным обеспечением как Paint. Данное программное обеспечение является основным приложением, которое входит в комплект к операционной системе семейства Windows. Это приложение является простеньким графическим редактором, которым можно редактировать различные картинки простыми инструментами и многое другое.
Многие начинающие люди, которые только знакомятся с данной программой, задают множество различных вопросов по тем или иным действиям в данной программе. На этот раз частым вопросом является – как сделать заливку в Paint. На самом деле это весьма простой вопрос. Но для начинающих это действие пока неизвестно.
Итак, перед тем как выполнить заливку, вам необходимо создать новый лист или просто открыть графический редактор. Если вы хотите закрасить весь лист, например, голубым цветом, то вам необходимо выбрать для начала этот цвет и лишь потом, выбрать специальный инструмент, который называется заливкой и кликнуть этим инструментом по листу. В итоге, лист полностью станет голубого цвета.
В итоге, у вас должно получиться именно так, как показано на картинке. С простой задачей мы справились. Теперь, попробуем перейти на следующий уровень и нарисуем квадрат красного света. Для этого, вам необходимо выбрать специальный инструмент – прямоугольник. Но перед этим, выберем красный цвет и нарисуем этот квадрат на рабочей области.
Если у вас получилось так, как показано на картинке, значит, вы все сделали правильно. Теперь, если вы захотите закрасить внутреннюю часть этого квадрата другим цветом, например, зеленым, то вам необходимо произвести те же действия, как и на первом рисунке, только именно на область квадрата. В итоге, у вас должно выглядеть это вот так:
Теперь вы освоили урок с заливкой. Данный инструмент имеет свойство заменять только выбранные цвета. Оттенки он, к сожалению, залить не сможет. Это касается только фотографий и других картинок, где цветов много. Для редактирования подобных картинок, вам необходим более мощный инструмент, который способен предложить более гибкие варианты заливки и работы с цветами – Adobe Photoshop. С помощью данного программного обеспечения вы сможете сделать не только красочные изображения, но и различные красивые абстракции. Но для начала, так как вы начинающий пользователь персонального компьютера, необходимо освоить для начала работу с Paint.
Закрашивание целых областей. Инструмент Paint Bucket (Заливка)
Красим, красим, закрашиваем
Представьте себе такую ситуацию. У вас на изображении имеется какой-либо одноцветный фрагмент, который бы вы хотели перекрасить в другой цвет. Можно, конечно, пытаться закрасить нужный участок кисточкой (инструмент Brush (Кисть)), но, согласитесь, это не самый быстрый и не самый лучший вариант. Ведь вам придется водить кистью очень внимательно, чтобы не перелезть на область с другим цветом. Если форма закрашиваемой области сложна, вам придется изрядно потрудиться, чтобы не напортачить.
Существенно упростить жизнь в подобных ситуациях позволяет
инструмент Paint Bucket (Заливка), кнопка которого доступна на панели инструментов. Выберите его, и указатель мыши примет вид наклоненного ведерка, из которого вытекает краска. Так вот, наведите кончик вытыкаемого из ведерка потока краски на ту область, которую вы хотите залить каким-либо цветом (его следовало выбрать заранее), щелкните мышкой, и, о чудо, вся область будет равномерно окрашена в выбранный цвет.
Рис. 3.20. Инструмент Paint Bucket (Заливка)
Аналогичным образом можете окрасить еще несколько фрагментов изображения. Если в ходе использования инструмента Paint Bucket (Заливка) вам понадобится воспользоваться пипеткой (Eyedropper) для выбора другого цвета, то менять инструмент не нужно, а достаточно просто нажать клавишу «Alt». Пока она нажата, инструмент Paint Bucket (Заливка) будет временно заменен на инструмент Eyedropper (Пипетка). После того, как закончите пипеткой выбирать цвет, отпустите клавишу «Alt» — и вы автоматически вернетесь в режим работы с заливкой.
Инструмент Paint Bucket (Заливка) позволяет не только заливать область каким-либо цветом, но и закрашивать определенным узором/ образцом. Для этого нужно изменить кое-что в его настройках (что и как именно — читайте в следующем разделе главы).
В заключение необходимо отметить, что назначение и возможности инструмента Paint Bucket (Заливка) несколько шире, чем окрашивание однотонных областей. В принципе Paint Bucket (Заливка) предназначен для окраски выделенной области или слоя выбранным цветом переднего плана или образцом. Просто когда ничего на изображении не выделено, то инструмент сам пытается определить границы заливки и в качестве них принимает границы одноцветной области. С использованием выделения, если выделена будет лишь часть одноцветной области, то заливка не будет распространяться за пределы выделения, несмотря на то что одноцветная область будет простираться и дальше. Если выделена некоторая область на слое и на этом слое под выделением ничего вообще не нарисовано, то при заливке окрашена будет вся область выделения как есть.
Дополнительные настройки и возможности инструмента Paint Bucket (Заливка)
На панели параметров доступны следующие настройки инструмента Paint Bucket (Заливка):
• В списке Fill (Заливка) можно выбрать, чем нужно выполнять заливку: цветом или заданным образцом. Если выбрать второй вариант, то на панели параметров станет доступна раскрывающая палитра Pattrns (Образцы), в которой и производится выбор нужного узора.
• В списке Mode (Режим) задается режим наложения кисти. По умолчанию выбран нормальный, а об особенностях всех остальных можно судить по информации, размещенной на одной из цветных вкладок.
• Поле Opacity (Прозрачность) предназначено для определения прозрачности заливки.
• В поле Tolerance (Допуск) задается допустимое отклонение от того оттенка, по которому выполнен щелчок инструментом Paint Bucket (Заливка). Все оттенки, отклонение которых будет меньше указанного в поле Tolerance (Допуск), будут восприниматься как один цвет и подлежать заливке. Значение задается в условных единицах от 0 до 255. По умолчанию установлено 32. Если вы хотите, чтобы цветовой охват при заливке был больше, увеличьте данное значение, а если нужно чтобы заливался только точно определенный цвет — уменьшите его.
• Включение флажка Anti-Aliased (Сглаживание) приводит к тому, что края залитой области буду аккуратно сглаживаться, смягчаться.
• По умолчанию является включенным флажок Contiguous (Смежные). Это означает, что окрашиваться должны только те пикселы указанного цвета, которые соприкасаются с выбранной точкой непосредственно или по цепочке через аналогичные пикселы. Если же на изображении присутствуют области того же цвета и они отделены друг от друга неразрывными границами другого цвета, то их, при установленном флажке Contiguous (Смежные), нужно будет заливать каждую по отдельности. Выключив флажок, вы сможете одним щелчком мыши окрасить все области на изображении определенного цвета.
• Флажок Use All Layers (Использовать все слои) играет роль тогда, когда редактируемое изображение состоит из нескольких слоев. Причем некоторые из них являются полупрозрачными. Так вот при установке данного флажка вы указываете инструменту Paint Bucket (Заливка) определять базовый цвет, который должен будет залит не на основе только того слоя, который является активным, а на основе всех видимых слоев. Наносимый же цвет по любому наносится только на активный слой.
Этот инструмент используется для заполнения области изображения определенным цветом. Для заливки области цветом переместите курсор внутрь нужной области и нажмите левую кнопку мыши, сто бы заполнить её основным цветом, или нажмите правую кнопку мыши для заполнения дополнительным цветом.
Заливка изображений — часто нужная на практике задача, суть которой — заполнить некоторую область изображения, ограниченную контуром, заданным цветом. И казалось бы все просто, однако часто медленно и криво. В данной статье рассказывается об известных алгоритмах заливки на основе стека и приводится реализация на псевдокоде MatLab. Я постарался наполнить столь скучную тему интересными видео роликами, и описал процесс их получения, опять же с использованием MatLab. В этой статье мы будем заливать Карлсона который живет на крыше, так как хабралоготипа для этих целей в нормальном разрешении я не нашел. А так же несколько строк кода о том как читать и работать с картинками в MatLab.
Предварительные сведения и предпосылки
Простым путем введем на упорядоченном наборе пар координат отношение связности или соседства. Будем различать случаи, когда точка имеет четыре соседа (Рис.1а) и случай когда у точки восемь соседей (Рис.1б).
На рисунке 2 квадратики изображают условные пиксели цифрового изображения, при этом черные пиксели описывают границу между двумя областями — верхней и нижней. Будем заливать верхнюю белую область синей краской. В случае если мы вводим только 4 соседа для точки, то синяя краска через черную границу не пройдет (Рис.2б) и нижняя область останется белой, а если использовать уже восемь соседей, то черная граница и не граница вовсе, а решето — через которое и проливается краска в нижнюю область.
Какой вид связности выбрать? На плоскости выбор небольшой — либо 4 либо 8 соседей и выбор зависит от постановки исходной задачи, однако в многомерном пространстве все сложнее, даже представить невозможно, и в статье мы рассмотрим лишь плоский случай. При этом будем рассматривать случай четырех соседей, который простым образом распространяется и на случай восьми.
Все заметили, что картинка Карлсона, раскрашенная по моему вкусу и представлению в Paint, в аннотации статьи, залита как — то криво, на границе черный контур — цветная область — есть белые и серые, бросающиеся в глаза точки? Это произошло по той причине, что наш Карлсон совсем не в бинарном цвете а в градациях серого. Первым делом уберем этот вопиющий недостаток и бинаризуем картинку, при этом нам достаточно работать только с одним каналом — пусть будет первый — красный.
Итак:
% //Прочитаем исходную картинку
source_image = imread( 'karlson.bmp' );
% // Взьмем из нее только первый канал
gray_image = source_image(. 1);
% // Бинаризуем с порогом 0.5
bim=double(im2bw(gray_image, 0.5));
% // Покажем картинку
imagesc(bim);
* This source code was highlighted with Source Code Highlighter
- Стартовая точка — пиксель в котором пользователь нажал подобно Point банкой с краской
- Старый цвет — цвет заливаемой области
- Новый цвет — цвет области после заливки.
Простой и медленный алгоритм заливки
Края изображения будем так же считать границей изображения.
Суть алгоритма проста: в текущей точке проверяем: если старый цвет — заменяем его на новый, если новый, то ничего не делаем. Затем выполняем эту же операцию для четырех соседей у которых цвет равен старому цвету.
Позволю себе один раз украсть исходный код, с рекурсивной реализацией, лишь для демонстрации сути:
//Recursive 4-way floodfill, crashes if recursion stack is full
void floodFill4( int x, int y, int newColor, int oldColor)
<
if (x >= 0 && x < w && y >= 0 && y < h && screenBuffer[x][y] == oldColor && screenBuffer[x][y] != newColor)
<
screenBuffer[x][y] = newColor; //set color before starting recursion
floodFill4(x + 1, y, newColor, oldColor);
floodFill4(x - 1, y, newColor, oldColor);
floodFill4(x, y + 1, newColor, oldColor);
floodFill4(x, y - 1, newColor, oldColor);
>
>
* This source code was highlighted with Source Code Highlighter
%Прочитаем исходную картинку
source_image = imread( 'karlson.bmp' );
% Взьмем из нее только первый канал
gray_image = source_image(. 1);
% Бинаризуем с порогом 0.5
bim= double (im2bw(gray_image, 0.5));
% Покажем картинку
imagesc(bim);
newColor = 0.5; oldColor = 1;
point.x = 48; point.y = 234;
stack = [point];
[w h] = size(bim);
stack_size = [];
mov = avifile( 'karlson_fill2.avi' , 'fps' ,50);
figure;
while (length(stack) ~=0)
point = stack(1);
stack(1) = []; % Удаляем закрашенную точку из стека
bim(point.x,point.y) = newColor; %Закрашиваем текущую точку
if (point.x+1 newpoint.x = point.x+1;
newpoint.y = point.y;
stack = [stack newpoint];
end;
if (point.x-1 > 0 && bim(point.x-1,point.y) == oldColor)
newpoint.x = point.x-1;
newpoint.y = point.y;
stack = [stack newpoint];
end;
if (point.y+1 newpoint.x = point.x;
newpoint.y = point.y+1;
stack = [stack newpoint];
end;
if (point.y-1 > 0 && bim(point.x,point.y-1) == oldColor)
newpoint.x = point.x;
newpoint.y = point.y-1;
stack = [stack newpoint];
end;
stack_size = [stack_size length(stack)];
imagesc(bim); colormap gray; axis image;
F = getframe(gca); mov = addframe(mov,F);
end;
mov = close(mov);
figure; imagesc(bim);
figure; plot(stack_size);
* This source code was highlighted with Source Code Highlighter
.
Можно сходить попить чаю, пока бровь нашего шалопая раскрашивается в серый цвет. При этом предлагаемый код нам еще и график заполненности стека на каждой итерации нарисует и мы его обсудим. А как приятный бонус кода — на выходе еще и видео ролик иллюстрирующий заполнение. Почему я выбрал такую маленькую деталь как бровь — потому что залить что-то другое, например пузо, учитывая особенности исполняемого языка Matlab, не представляется возможным за конечное время.
Собственно вот какие у нас результаты получились: График заполненности стека приведен в логарифмических координатах на рисунке 5.
А голова с раскрашенной бровью изображена на рисунке 6. Видео иллюстрирующее процесс заполнения области предлагается к просмотру ниже. Все говорит нам о том, что алгоритм работает крайне медленно, посмотрите на рисунке 5 (по оси X — номер итерации, по оси Y — количество еще необработанных точек) как медленно опустошается стек (учтите логарифмические координаты), а дело все в том, что происходит слишком много лишних проверок точек. Те точки которые были залиты на предыдущем этапе все равно проверяются на следующем. Конечно же это никуда не годится. Далее мы устраним эту несправедливость! Видео файл — 50 кадров в секунду.
Алгоритм заливки — быстрый, линиями
Суть рекурсивного алгоритма:
Начинаем заполнять текущую линию от одного края до другого.
Вначале вверх из стартовой точки а затем вниз.
Возвращаемся в стартовую точку. Смотрим — если слева от стартовой точки старый цвет и нет границы, то выполняем заполнение новой линии.
Возвращаемся в стартовую точку. Смотрим — если справа от стартовой точки старый цвет и нет границы, то выполняем заполнение новой линии.
clear all;
%Прочитаем исходную картинку
source_image = imread( 'karlson.bmp' );
% Возьмем из нее только первый канал
gray_image = source_image(. 1);
% Бинаризуем с порогом 0.5
bim= double (im2bw(gray_image, 0.5));
% Покажем картинку
imagesc(bim);
newColor = 0.5; oldColor = 1;
point.x = 17; point.y = 143;
stack = [point];
[w h] = size(bim);
stack_size = []; spanLeft = 0; spanRight = 0;
mov = avifile( 'karlson_fill3.avi' , 'fps' ,50);
figure;
while (length(stack) ~=0)
point = stack(1);
stack(1) = []; % Удаляем закрашенную точку из стека
y1 = point.y;
% Находим границу слева
while (y1 >= 1 && bim(point.x,y1) == oldColor) y1 = y1 - 1; end;
y1 = y1 + 1;
spanLeft = 0; spanRight = 0;
%Топаем по строке от левой границы вправо
while (y1 < h && bim(point.x,y1) == oldColor)
bim(point.x,y1) = newColor; %Закрашиваем текущую точку
if (spanLeft == 0 && point.x > 0 && bim(point.x-1,y1) == oldColor)
newpoint.x = point.x-1; newpoint.y = y1; stack = [stack newpoint];
spanLeft = 1;
elseif (spanLeft == 1 && point.x > 0 && bim(point.x-1,y1) ~= oldColor)
spanLeft = 0;
end;
y1 = y1 + 1;
stack_size = [stack_size length(stack)];
imagesc(bim); colormap gray; axis image;
F = getframe(gca); mov = addframe(mov,F);
end;
end;
mov = close(mov);
* This source code was highlighted with Source Code Highlighter
На рисунке 7 у нас график заполненности стека, но уже в обычных координатах. А видео, иллюстрирующее заполнение лапы новым цветом предлагается ниже. Оно сделано так же — 50 кадров в секунду.
Как мы видим в этом случае наш стек (Рис.7) оказывается ничтожно заполненным на протяжении всей заливки, да и со скоростью мы выиграли за счет поиска с меньшей глубиной.
Заключение
В заключение хочу сказать — иллюстрируйте все, даже такие простые алгоритмы, ибо в красоте сила.
Так же прощу прощения за длинную статью и в качестве затравки для возможно следующей
статьи приведу ссылку . Там описан еще один очень интересный и очень быстрый алгоритм заливки мне незнакомый до этого. Возможно, найдется герой со свободным временем, который так же подробно и с иллюстрациями разберет этот алгоритм.
А если у кого-то ресурсы мощнее, то предлагаю все таки залить пузо Карлсону и выложить сюда ролик, а то у меня терпения не хватает пока ролик пишется. Благо для этого весь код есть.
С помощью этого алгоритма можно закрашивать любые замкнутые области. Исходными данными для этого алгоритма являются цвет границы области и точка, принадлежащая этой области (т.н. затравочный пиксел). Суть метода заключается в следующем: мы берём затравочную точку и закрашиваем её. Для каждого незакрашенного соседа мы выполняем аналогичную процедуру. Т.о. мы получаем рекурсивный алгоритм, описание которого на псевдокоде представлено ниже:
1. Поместить затравочный пиксел в стек ;
2. Извлечь пиксел из стека ;
3. Присвоить пикселу требуемое значение ( цвет внутренней области ) ;
4. Каждый окрестный пиксел добавить в стек, если он
4.1. Не является граничным ;
4.2. Не обработан ранее ( т.е. его цвет отличается от цвета границы или цвета внутренней области ) ;
5. Если стек не пуст, перейти к шагу 2.6
Разумеется, можно использовать как четырёх-, так и восьмисвязную окрестность.
Недостатков у этого алгоритма больше, чем преимуществ: он медленный и расходует много памяти для стека, поэтому гораздо правильнее будет перейти к рассмотрению следующей группы алгоритмов.
Алгоритмы со списком рёберных точек
- Когда секущая прямая содержит ребро;
- Когда секущая прямая содержит вершину, а смежные рёбра лежат по одну сторону от секущей прямой.
Алгоритмы XOR
Построчная XOR-обработка
Этот метод растеризации многоугольников основан на свойствах логической операции исключающего ИЛИ (XOR).
Этот алгоритм, как и алгоритм со списком рёберных точек, начинается с растеризации границ. После того, как границы построены, закрашивание сводится к заполнению в каждой строке промежутков между двумя закрашенными точками.
Представим изображение в виде бинарного массива I. Договоримся, что I[x;y]=1, когда пиксел закрашен, и I[x;y]=0, когда пиксел не закрашен. Легко заметить, что применение операции I[x+1,y]=I[x;y]XOR I[x+1;y] ко всем пикселам в строке приведёт к почти идеальному результату. В результате этой операции будут закрашены все промежутки, но последний пиксел в каждом промежутке не будет закрашен. В большинстве случаев эта погрешность несущественна и незаметна, но если требуется получить точный результат, можно после завершения алгоритма повторно вывести на экран границы, или воспользоваться небольшой модификацией этого алгоритма.
for y := 1 to YMax do
begin
fl := false ;
for x := 1 to XMax do
begin
if I [ x , y ] = 1 then
fl := not fl;
if fl then
I [ x , y ] := 1 ;
end ;
end ;
Преимущество этого алгоритма в его предельной простоте и высокой скорости. Недостаток в том, что алгоритм не может работать, при наличии посторонних изображений.
Алгоритм XOR для граней
Метод XOR для граней описывается следующим простым алгоритмом: Для каждого ребра в многоугольнике инвертируются цвета всех пикселов, расположенных правее этого ребра. При этом порядок обхода рёбер не имеет значения. В таблице приведены шаги этого алгоритма (движение по часовой стрелке):
Недостаток этого алгоритма – высокие временные затраты, так как некоторые пикселы обрабатываются более одного раза. Кроме того, чем больше расстояние от изображения до правой границы области экрана, тем больше будет совершено лишних операций.
Алгоритм XOR для граней с перегородкой
От некоторых из недостатков свободен модифицированный вариант алгоритма XOR для граней. Он называется алгоритм XOR для граней с перегородкой. Его идея заключается в том, чтобы инвертировать область не между ребром и границей экрана, а между ребром и специальной вертикальной линий (т.н. перегородкой). Чаще всего перегородка проводится так, чтобы она пересекала многоугольник. Шаги работы алгоритма приведены в таблице.
Инструмент «Заливка» можно использовать для заполнения некой отдельной области указанным цветом. Для этого нужно разместить указатель курсора в той области, которую нужно закрасить, а затем щелкнуть левой кнопкой мыши, чтобы залить ее Основным цветом или правой кнопкой, чтобы залить Дополнительным.
Регион изображения для заливки определяется как область с похожим цветом вокруг указателя курсора. Порог чувствительности (или «похожести») цвета регулируется движком «Чувствительность» на панели инструментов. Также здесь можно установить стиль, который будет использоваться при заливке и многие другие параметры.
Режимы Заполнения
У Заливки есть два режима Заполнения: Глобальное и Непрерывное. Эти режимы определяют способ работы заливки и выбираются на Панели Инструментов.
- Непрерывное заполнение означает, что заливка распространяется из точки клика до тех пор, пока соседние пиксели не будут соответствовать настройке Чувствительности.
- Глобальное заполнение означает, что заливка распространяется на все пиксели в слое, которые соответствуют настройке Чувствительности.
Внимание! Для включения Глобального режима заливки используйте клавишу Shift. Удерживая клавишу Shift кликните для временного включения Глобального режима.
Чувствительность
Настройка Чувствительности на Панели Инструментов — это это проверка соответствия. Низкое значение означает, что пиксели должны быть точно такими же, как пиксель точки щелчка, чтобы их можно было заполнить. Высокое значение позволяет включить в операцию заливки более широкий разброс пикселей.
Слева исходное изображение. На втором изображении показана исходная заливка с настройкой допуска 36%. Третье изображение показывает заливку, покрывающую большую область, потому что допуск был увеличен до 42%. Изображение справа показывает, что область заливки снова увеличилась в размере, потому что допуск снова был увеличен. На этот раз до 60%.
Обратите внимание, как изменяется заливка, чтобы покрыть большую или меньшую часть исходного изображения по мере изменения величины Чувствительности.
Чувствительность можно корректировать даже пока заливка остается не завершенной. Изменение параметра Чувствительность интерпретирует операцию заполнения с использованием исходной точки клика с новым параметром.
Изменение цвета на лету
Изменить цвет заливки на лету легко, но это можно сделать только в том случае, когда заливка все еще активна.
Чтобы изменить цвет заливки на лету, просто измените соответствующий цвет в окне Палитры. Если заливка выполняется с использованием Основного цвета, то для изменения цвета надо выбрать новый Основной цвет в окне Палитра. Если заливка выполняется с использованием Дополнительного цвета, то его можно изменить в окне Палитры. Изменение цвета заливки в окне Палитра немедленно перекрашивает заполненную область. Перетаскивание точки клика
Управляющий маркер выглядит как белый квадрат с четырьмя стрелками внутри него. Чтобы переместить точку клика, нажмите и перетащите этот значок. Операция заполнения будет переинтерпретирована, будто бы пользователь отменил заливку и повторно применил ее, используя новую исходную точку.
На изображении выше показано, что начальная операция заливки окрашивает левую шестеренку в розовый цвет. Эту заливку легко нанести на другую шестерню; просто перетащите точку щелчка по области, которую нужно заполнить. На левом изображении показана перемещенная точка щелчка и полученная в результате измененная заливка. Поскольку операция заполнения больше не применяется к левой шестерне, она возвращается к своему предварительно заполненному цвету (желтому).
Перетаскивание точки клика
Стили Заливки
Инструмент «Заливка» заполнит область типом заливки, указанным на панели инструментов. Эта функция позволяет заливать области одним из множества узоров, а не сплошным цветом. Заполнения с использованием стиля заливки будут использовать Основной и Дополнительный цвета.
Режимы Выборки
У инструмента «Заливка» есть два режима выборки: Изображение и Слой. Эти режимы совместно используются инструментами «Заливка», «Волшебная палочка» и «Пипетка». Режимы Выборки определяют, какие пиксели будут отбираться или тестироваться, чтобы определить степень заполнения.
- Изображение — пиксели опрашиваются из составного изображения, чтобы определить их пригодность для включения в операцию заливки. Этот режим будет работать так же, как если бы многослойное изображение было сведено до использования инструмента «Заливка». Пиксели за пределами активного выделения будут проигнорированы, а пиксели в активном слое будут подвергаться заливке.
- Слой — пиксели только в активном слое и выделенном фрагменте (если есть) опрашиваются, чтобы определить их пригодность для включения в операцию заливки.
Режимы Смешения
Инструмент «Заливка» может быть применен в режиме смешения, выбранном на Панели Инструментов. Заливка будет применена в соответствии с другими параметрами (Чувствительность, Выборка, Стиль заливки, и т.д.), а затем интерпретируется так, как если бы пиксели были на своем слое с установленным режимом наложения слоев.
Пример использования инструмента Заливка
На нижеприведенном примере были нарисованы два круга. Чувствительность была установлена на 75%, чтобы обеспечить меньшее влияние на сглаженные края. Инструмент «Заливка» был применен три раза: один раз внутри каждого круга и один раз в области пересечения.
При первой заливке использовалась левая клавиша мыши, в результате чего был залит Основной цвет (синий). Во втором заполнении использовалась правая клавиша мыши для использования Дополнительного цвета (желтого). Область пересечения была заполнена одним из доступных Стилей заливки (Диагональная клетка), в котором используются как Основные и Дополнительные цвета.
Обрезать по выделению
Эта команда доступна только если на изображении есть выделенная область. Применение команды приведет к тому, что в качестве изображения останется только та его часть, что входила в эту область. Если область выделения была прямоугольной или квадратной, то новое изображение будет в границах этого прямоугольника или квадрата.
Если же выделение было овальной (круглой) или другой формы, то в качестве границ изображения будет использован прямоугольник, включающий в себя область выделения. Пиксели, не попавшие в эту область, станут прозрачными.
Рассмотрим пример применения команды «Обрезать по выделению». На первом рисунке приведено исходное изображение.
Исходное изображение
На втором рисунке была выделена (инструмент «Выбор области овальной формы») область охватывающая изображение цветка.
Изображение с выделенной областью
И на третьем рисунке приведено изображение, получившееся после применения команды «Обрезать по выделению».
Изображение после обрезания
Заметьте — для выделения границ нового изображения был использован прямоугольник, охватывающий выделенную область, но те пиксели, что не попали в область выделения, стали прозрачными. Помните также, что рисунок «шахматной доски» обозначает прозрачную область изображения. Реально он не является его частью.
Изменить размер…
Эта команда изменяет размер изображения. Изображение можно увеличить или уменьшить до указанного вами размера.
Доступно два режима изменения размера: «Процент» и «Абсолютный размер». Они предлагают возможность изменения размера изображения в процентах или с указанием новой высоты и/или ширины. Если опция «Сохранять пропорции» включена, то задание новой ширины будет приводить к пропорциональному изменению высоты и наоборот. Если же данная опция отключена, то при увеличении изображения будет терятся его качество.
Некоторые из этих алгоритмов дают лучший видимый результат, но требуют продолжительного времени на обработку. Для большинства же задач вполне подойдет установленный по умолчанию способ «Лучшее качество», при котором происходит автоматический выбор одного из двух способов перерисовки («Бикубическая» либо «Супервыборка»). Остальные способы перерисовки («Билинейная», «Метод соседних пикселей», и «Метод Фанта») применяются только при наличии специфических требований, и понимании принципа их работы.
Пример изменения размера изображения
Исходное изображение Изображение после увеличения (команда «Изменить размер») Изображение после уменьшения (команда «Изменить размер»)
Важно! В зависимости от типа изображения, размер которого изменяется, использование эффекта Эффекты → Для фотографий → Резкость может улучшить детали, смягченные командой «Изменить размер».
Печать изображения
Размер печати рассчитывается на основе разрешения (DPI). При выборе единицы измерения (дюймы, сантиметры), размер пикселя будет основываться на разрешении принтера, которое по умолчанию равно 96 пикселей на дюйм (или 37.8 пикселей на сантиметр). Например, если вы указали, что изображение будет шириной 1 дюйм, то при разрешении 96 пикселей на дюйм размер изображения будет изменен так, что его ширина будет составлять 96 пикселей.
Также вы можете изменить размер изображения при печати через изменение его разрешения. Заметьте однако, что если вы меняете только разрешение изображения, то размер пикселя на экране остается таким же, и никакой перерисовки не производится.
Размер полотна…
Эта команда позволяет вам увеличить или уменьшить размер полотна без изменения размера самого изображения. Работа команды похожа на диалог команды «Изменить размер…», за исключением того, что в этом случае добавлен выбор области «закрепления» изображения (По центру, Вверху, Вверху справа, Вверху слева, Слева, Справа, Внизу, Внизу справа, Внизу слева).
Если холст увеличен, новая область будет заполнена пикселями того же цвета, что и вторичный цвет. Если холст уменьшен, края существующего изображения за пределами новой области холста будут обрезаны.
Примеры увеличения и уменьшения размера полотна изображения
Исходное изображение После увеличения размера полотна (закрепление «По центру», вторичный цвет — желтый) После уменьшения размера полотна (закрепление «По центру»)
Повернуть горизонтально/Повернуть вертикально
Эти команды позволяют повернуть изображение по горизонтали или по вертикали. Помните — команда касается всех слоев изображения.
После команды «Повернуть горизонтально» После команды «Повернуть вертикально»
Повернуть по часовой стрелке на 90°
Повернуть против часовой стрелки на 90°
Повернуть на 180°
Эти команды позволяют повернуть изображение на 90° по часовой стрелке, на 90° против часовой стрелки, или на 180°.
Исходное изображение Повернуть против часовой стрелки на 90°
Объединить все слои
Команда объединяющая все слои изображения в один. Применение команды возможно только когда изображение содержит более одного слоя.
Читайте также: