Wand-mode это режим просмотра и редактирования изображений для SXEmacs.
Wand-mode базируется на
API ImageMagick и поэтому в
Wand-mode возможны многие операции программ
convert(1),
display(1) и т.д.
Wand-mode поддерживает все форматы поддерживаемые
IM, а их более 100, в том числе PDF, EPS, etc.
Знакомство с Wand-mode
M-x Wand-display RET /path/to/image.jpg RET получаем результат примерно следующий:
Смотрим информацию о файле - кнопка
i:
Теперь подредактируем: наложим операцию очищения от мусора (Despeckle) и немного уменьшим контрастность. Используем кнопки
o despeckle RET далее
o contrast RET decrease RET. Везде будет работать completition так что не переживайте. Получаем результат:
Просмотр директорий с изображениями
У
Wand-mode простые, но неплохие навигационные возможности для просмотра. Откройте любой файл с помощью
Wand-display, если в его директории есть ещё файлы, поддерживаемые
IM, то вы можете использовать кнопки:
- Space - следующая картинка
- BackSpace - предыдущая
- M-< - Самая первая картинка в директории
- M-> - Самая последняя картинка в директории
Меню Wand-mode
У Wand-mode есть отличное меню (чем-то схожее с меню display(1)) для работы изображением.
Меню доступно либо из
menubar если он у вас включён, либо же по правой кнопке мыши. Все команды, которые можно выполнить клавиатурой можно выполнить и через меню. Верно и обратное - все команды, которые можно выполнить через меню можно выполнить и через клавиатуру.
Настройка Wand-mode
У
Wand-mode не так много параметров, поэтому настройка дело простое. Как обычно вы можете всё сделать через
M-x customize-group RET Wand-mode RET, я лишь приведу небольшое описание параметров, которые вы скорее всего захотите изменить:
- Wand-mode-zoom-factor - Number (default: 2)
Как из названия ясно это коэффициент для команд +(zoom-in) и - (zoom-out)
- Wand-mode-show-fileinfo - Boolean (default: t)
Если non-nil, то будет выводится минимальная информация о просматриваемом файле. Для более подробной информации, как уже отмечалось, есть команда i.
- Wand-mode-show-operations - Boolean (default: t)
Если non-nil, то при выполнении операций будет выводится список операций над изображением. Выполнять команды undo/redo вы сможете в любом случае.
- Wand-mode-auto-fit - Boolean (default: t)
Если non-nil, то при выводе изображения в окне SXEmacs оно(изображение) будет уменьшено если не умещается.
- Wand-mode-auto-rotate - Boolean (default: t)
Если non-nil, то в случае наличия у изображения информации о его ориентации (современные фотоаппараты умеют правильно определять ориентацию в зависимости от положения фотоаппарата в пространстве), то выводимое изображение будет автоматически повёрнуто. При этом поворот будет входить в список совершённых операций над изображением. Достаточно удобно.
Внесение изменений и сохранение результатов
Для операций над изображением по умолчанию доступны следующие кнопки:
- l - Поворот на 90° против часовой стрелки (как бы влево)
- r - Поворот на 90° по часовой стрелке (как бы вправо)
- + - Увеличение изображения в соответствии с Wand-mode-zoom-factor
- - - Уменьшение изображения в соответствии с Wand-mode-zoom-factor
- o - Главная кнопка операций. Спрашивает у пользователя какую операцию и с какими параметрами применить. Поддерживает completition.
Операции можно применять одна за другой, как мы уже делали. Все операции над картинкой записываются и в любой момент можно сделать undo или redo операций с помощью стандартных клавиш
C-/ (или
C-_) и
C-x C-/, также можно повторно применить последнюю операцию при помощи кнопки
C-. или
C-x M-: (в обычном режиме эта комбинация выполняет команду
`repeat-complex-command'). Чтобы отменить все операции просто перезагрузите изображение при помощи команды
C-r.
Теперь когда новое изображение готово, его нужно сохранить на диск. Для этого есть две команды:
- C-x C-w - Вам предложат выбрать один из форматов для записи и имя нового файла. ВНИМАНИЕ: запись в неграфические форматы типа HTML, TXT и т.д. может привести к core dump. По всей видимости это связано с ошибкой в IM, но, к сожалению, разработчики IM не шибко контактные ребята, поэтому бог знает когда это будет исправлено.
- C-x C-s - Простой вариант записи. Вам предложат выбрать имя файла, а формат изображения будет определён из расширения имени.
Операции над областью изображения
С помощью левой кнопки мыши можно выделить некоторую область изображения, например руку Сары:
Если параметр Wand-mode-show-fileinfo проставлен в non-nil, то вы увидите координаты области, иногда это полезно. Когда область активна, то некоторые операции (которые можно применить для области, например изменение контраста, уменьшение шума, размытие и т.д.) будут изменять изображение только в области. Есть также команды, которые можно выполнить только для области, такие как:
- c - crop, оставить только область и отрезать всё что вне её
- o chop RET - chop, вырезать область и сомкнуть края
- Устранение красных глаз
Выполнив операцию над областью, выделение исчезает. Чтобы заново выделить последнюю область используйте команду
C-M-z (в обычном режиме эта комбинация клавиш выполняет
activate-region).
Самое главное в устранении красных глаз это грамотно выделить область с краснотою. Выделять лучше всего таким образом, чтобы краснота была в центре и оставалось немного пространства от красноты до краёв выделенной области. Вот пример удачного выделения:
А вот не совсем удачного, хотя алгоритм устранения красных глаз сработает и в данном случае, но при более тяжёлых будут заметны артефакты:
После того как вы выделили нужную область просто нажмите
. или выберите пункт в Меню
Wand →Region→Remove red eye.
Алгоритм устранения красных глаз достаточно прямолинеен и не дотягивает до реализованных в профессиональных утилитах. С другой стороны результаты демонстрирует неплохие и пригодные для сельской местности. Я провёл сравнение и вот результаты:
Про то как улучшить алгоритм устранения красных глаз и как его тестировать я напишу в следующий раз.
Сводная таблица операций
Ну и напоследок я сделал небольшой обзор операций над изображениями. Заметим, что операции, которые не изменяют размер изображения могут без проблем применяться к области:
| Transform |
|  | Sample
Width: 400
Height: 200 |  |
|  | Rotate
Degrees: 120° |  |
|  | Flip |  |
|  | Flop |  |
| Effect |
 | Add Noise
Noise type: Poisson |  |
 | Despeckle |  |
 | Edge detect
Radius: 1.0 |  |
 | Emboss
Radius: 1.0
Sigma: 2.0 |  |
 | Gaussian Blur
Radius: 1.0
Sigma: 2.0 |  |
 | Radial Blur
Radius: 3.0 |  |
 | Reduce Noise |  |
 | Sharpen
Radius: 1.0
Sigma: 2.0 |  |
 | Spread
Radius: 1.0 |  |
| Enhance |
 | Contrast
Type: increase |  |
 | Contrast
Type: decrease |  |
 | Enhance |  |
 | Equalize |  |
 | Negate |  |
 | Normalize |  |
| F/X |
 | Charcoal
Radius: 1.0
Sigma: 2.0 |  |
 | Implode
Radius: 0.4 |  |
 | Implode
Radius: -0.4 |  |
 | Oil Paint
Radius: 2.0 |  |
 | Sepia Tone
Threshold: 85% |  |
 | Solarize
Threshold: 50% |  |
 | Swirl
Angle: 90° |  |
 | Vignette
Black/White: 10 |  |
 | Wave
Amplitude: 2
Wave length: 10 |  |