среда, 10 февраля 2010 г.

jpeg lossless rotation & crop

При просмотре фотографий часто выясняется, что держать фотоаппарат боком - не лучшая идея. Приходится разворачивать снимки. Раньше я всегда поворачивал такие изображения только на время просмотра и не сохранял (или сохранял в PNG, что сильно увеличивало размер файла), так как при повторном сохранении в JPEG картинка ухудшится (а мой фотоаппарат сохраняет фотографии именно в JPEG). От этого я особенно не любил встроенный просмотрщик в Windows XP, который при повороте сразу пересохранял изображение.
Оказывается люди придумали решение этой проблемы: jpegtran, который обеспечивает lossless rotation и crop.
Оказалось также, что есть куча программ, которые это используют, вот список.
При помощи gwenview я и развернул и пересохранил большинство своих фотографий. Правда следует учесть что делал я это в gwenview из kde3, gwenview из kde4 (версии 4.3.1) при повороте меняет изображение, что можно заметить даже по пятнам в вычитании двух изображений в GIMP. Насколько я знаю и нагуглил, ImageMagic тоже не умеет вращать или обрезать JPEG без потерь, так что придётся старый gwenview оставить. Под Windows вероятно самым доступным приложением является Irfanview с плагином.

понедельник, 1 февраля 2010 г.

Планшет G-Pen 560 и openSUSE 11.2

Случилось мне прикручивать планшет G-Pen 560 под openSUSE 11.2. Сам планшет без драйверов отлично работает и в Windows и в GNU/Linux как мышка, или как тычпад. Однако ценность планшета именно в абсолютном позиционировании и разной степени давления.
Сначала я попытался делать аналогично инструкции, однако с поправками на дистрибутив. WizardPen есть в OBS и доступен тут, поэтому никакой возни со сборкой и установкой. После загрузки и установки x11-input-wizardpen-0.7.0.alpha2-2.1.x86_64.rpm и x11-input-wizardpen-tools-0.7.0.alpha2-2.1.x86_64.rpm запустил калибровку:

wizardpen-calibrate /dev/input/wizardpen

При этом калибровка попросит ткнуть сначала в один угол планшета, потом в противоположный ему и выдаст подобные строки для xorg.conf:

Driver "wizardpen"
Option "Device" "/dev/input/wizardpen"
Option "TopX" "329"
Option "TopY" "500"
Option "BottomX" "11836"
Option "BottomY" "8910"
Option "MaxX" "11836"
Option "MaxY" "8910"

Далее выяснилось что в openSUSE 11.2 файла xorg.conf уже нет, и всё работает автоматически и без него. Тем не менее, я создал xorg.conf при помощи Sax2 и вставил в него эти строки. После перезапуска исков, они стали падать при любой активности планшета.
Добрые люди подсказали что теперь всем заведует HAL, поэтому мучить нужно его. Я удалил ненужный более xorg.conf (если работает без него, значит пусть и работает дальше).
После этого открыл /etc/hal/fdi/policy/99-x11-wizardpen.fdi, переименовал ключ info.product из "TABLET DEVICE" в "Aiptek" (надо будет разобраться на досуге зачем) и изменил значения остальных ключей в соответствии с тем, что выдала калибровка. Получился такой файл:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<deviceinfo version="0.2">
<device>
<!-- "info.product" MUST match the name of your tablet: -->
<!-- grep -i name /proc/bus/input/devices -->
<match key="info.product" contains="Aiptek">
<merge key="input.x11_driver" type="string">wizardpen</merge>
<merge key="input.x11_options.SendCoreEvents" type="string">true</merge>

<!-- Modify these configurations accordingly -->
<!-- Use "man wizardpen" for the full-set of -->
<!-- configurable options -->
<merge key="input.x11_options.TopX" type="string">329</merge>
<merge key="input.x11_options.TopY" type="string">500</merge>
<merge key="input.x11_options.BottomX" type="string">11836</merge>
<merge key="input.x11_options.BottomY" type="string">8910</merge>
<merge key="input.x11_options.TopZ" type="string">75</merge>
<merge key="input.x11_options.debugyn" type="string">0</merge>
</match>
</device>
</deviceinfo>

В TopZ регулируется чувствительность к касанию, настраивается индивидуально.
Воткнул планшет и он заработал как надо! Правда GIMP думает что это Aiptek, но это не суть важно.