воскресенье, 22 января 2012 г.

Photoshop – Как выровнять кожу без потери текстуры


Существует несколько способов того, как выровнять кожу в Photoshop. Чаще всего при этом кожа становится слишком сглаженной и выглядит ненатурально и синтетически. Сегодня я продемонстрирую простую технику, которая поможет вам быстро выровнять кожу, сохраняя текстуру пор. Но перед тем как начать, давайте последний раз взглянем на оригинальную фотографию.
before Photoshop   Как выровнять кожу без потери текстуры
Как выровнять кожу в Фотошоп. Оригинал.

Шаг 1

Откройте фотографию и скопируйте фоновый слой. Просто перетащите слой на иконку нового слоя внизу справа в палитре слоев. Теперь поменяйте режим смешивания только что созданного слоя на «Vivid Light».
step1 Photoshop   Как выровнять кожу без потери текстуры
Как выровнять кожу в Фотошоп. Шаг 1.

Шаг 2

Теперь нужно инвертировать этот слой. Нажмите Cmd + I или Image>Adjustments > Invert. Затем выберите Gaussian Blur, выбрав Filter > Blur >Gaussian Blur. Применяя фильтр блюра к инвертированной картинке, вы получите форму, очертание изображения. Покрутите слайдер до тех пор, пока не увидите поры на лице.
step2 Photoshop   Как выровнять кожу без потери текстуры
Как выровнять кожу в Фотошоп. Шаг 2.

Шаг 3

Теперь выровняем кожу. Для этого выбирем Filter > Other >High Pass. Двигайте слайдер, пока не будете довольны степенью сглаженности. Вы можете заметить ореолы и другие странные детали вокруг глаз – просто игнорируйте их на этом этапе. Сконцентрируйтесь на щеках, лбу и носе.
step3 Photoshop   Как выровнять кожу без потери текстуры
Как выровнять кожу в Фотошоп. Шаг 3.

Шаг 4

Создайте новую маску слоя и выберите черный, чтобы скрыть картинку. Переключитесь на белый, выберите маску и начинайте рисовать по коже мягкой кистью. Начните со щек, двигайтесь ко лбу, носу и остановитесь на подбородке. Если эффект слишком сильный, просто уменьшите непрозрачность кисти.
step4 Photoshop   Как выровнять кожу без потери текстуры
Как выровнять кожу в Фотошоп. Шаг 4.

Финальная картинка

Мы закончили! Я надеюсь, эта техника вам удалась и понравилась своей простотой.
final Photoshop   Как выровнять кожу без потери текстуры
Как выровнять кожу в Фотошоп. Финальная картинка.

Как грамотно добавить блик к вашей фотографии, Урок фотошоп.


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

А это наше исходное изображение
Уроки фотошоп

ШАГ 1
Итак, применим к нашей фотографии фильтр "Блик", для этого пройдем в меню Filter/Фильтр, далее Render/Рендеринг, и выбирем Lens Flare/Блик.
Уроки фотошоп

Откроется диалоговое окно в котором можно смоделировать разные виды бликов. В этом диалоговом окне установим следующие настройки Вид объектива 50-300mm Zoom/Трансфокатор 50-300 мм, далее поместим источник блика в то место нашей фотографии, где у нас находится солнце, для этого просто кликните в нужном месте фотопревью. 
Уроки фотошоп
 Как только местоположение источника блика вас устроит нажимайте OK.

В итоге мы имеем такой результат, многие бы оставили бы его и не стали бы заморачиваться дальше, т.к. фото смотрится хорошо. НО, если приглядеться то станет видно главную проблему эффекта. Эффект блика черезчур яркий, это грубая ошибка, незаметная не наметанному глазу. Поэтому работаем дальше.
Уроки фотошоп

ШАГ 2
Отменим действие фильтра нажав комбинацию клавиш CTRL-Z, или кликнув меню Edit/Редактирование и далее  Undo Lens Flare/Отменить Блик.
Уроки фотошоп

ШАГ 3
Создадим новый пустой слой нажав на значек как на рисунке ниже.
Уроки фотошоп

ШАГ 4
Зальем этот новый пустой слой черным цветом, сделать это можно следующим образом. Идем в меню  Edit/Редактирование,  далее  Fill/Выполнить заливку
Уроки фотошоп

И в открывшемся диалоговом окне выбираем черный цвет, как на рисунке ниже.
Уроки фотошоп
Нажимаем ОК и фотошоп зальет новый слой черным цветом скрыв нашу фотографию. 
ШАГ 5
Теперь используем повторно фильтр Блик к этому черному слою, фотошоп пока помнит все установленные параметры фильтра, в том числе и положение источника блика, и чтобы их применить к новому слою, нажмем комбинацию клавиш Ctrl+F.
Вот, что мы получаем.
Уроки фотошоп


ШАГ 6
Теперь изменим режим наложение для черного слоя с бликом на Screen/Осветление
Уроки фотошоп

 В итоге черный фон исчезнет и останется тот же самый эффект блика, только на отдельном слое. 
Уроки фотошоп

Так как фотогрфия и линзы находятся на разных слоях, мы без проблем можем выключать блик, кликнув на значек глаза.
Уроки фотошоп

ШАГ 7
Еще одна выгода блика на отдельном слое в том, что можно сбавить его интенсивность, для этого убавим непрозрачность.
Уроки фотошоп

Вуаля, вот такой результат получился с непрозрачностью 50%
Уроки фотошоп
Теперь сохранив результат в формате PSD вы без труда сможете использовать ваше фото и при необходимость включать и выключать блик.

четверг, 5 января 2012 г.

Serialization in C#


Serialization (known as pickling in python) is an easy way to convert an object to a binary representation that can then be e.g. written to disk or sent over a wire.
It's useful e.g. for easy saving of settings to a file.
You can serialize your own classes if you mark them with [Serializable] attribute. This serializes all members of a class, except those marked as [NonSerialized].
.NET offers 2 serializers: binary, SOAP, XML. The difference between binary and SOAP is:
  • binary is more efficient (time and memory used)
  • binary is not human-readable. SOAP isn't much better.
XML is slightly different:
  • it lives in System.Xml.Serialization
  • it uses [XmlIgnore] instead of [NonSerialized] and ignores [Serializable]
  • it doesn't serialize private class members
An example of serialization/deserialization to a file:
using System.IO;
using System.Diagnostics;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters;
using System.Runtime.Serialization.Formatters.Binary;
[Serializable]
public class MySettings {
    public int screenDx;
    public ArrayList recentlyOpenedFiles;
    [NonSerialized]public string dummy;
}
public class Settings {
    const int VERSION = 1;
    static void Save(MySettings settings, string fileName) {
            Stream stream = null;
            try {
                IFormatter formatter = new BinaryFormatter();
                stream = new FileStream(fileName, FileMode.Create, FileAccess.Write, FileShare.None);
                formatter.Serialize(stream, VERSION);
                formatter.Serialize(stream, settings);
            } catch {
                // do nothing, just ignore any possible errors
            } finally {
                if (null != stream)
                    stream.Close();
            }
    }
    
    static MySettings Load(string fileName) {
        Stream stream = null;
        MySettings settings = null;
        try {
            IFormatter formatter = new BinaryFormatter();
            stream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.None);
            int version = (int)formatter.Deserialize(stream);
            Debug.Assert(version == VERSION);
            settings = (MySettings)formatter.Deserialize(stream);
        } catch {
            // do nothing, just ignore any possible errors
        } finally {
            if (null != stream)
                stream.Close();
        }
        return settings;
    }
}