LXF99:Вопрос5

Материал из Linuxformat.

(Различия между версиями)
Перейти к: навигация, поиск
(Новая: ===Фото-групповуха=== '''В:''' ''Мне бы хотелось иметь простую команду для перевода всех RAW-изображений в па...)
м (восстановление кавычек в коде AWB)
 
Строка 8: Строка 8:
for f in ~/photographs/new/*.PEF
for f in ~/photographs/new/*.PEF
do
do
-
dcraw -c $f” | pnmtotiff -lzw >${f/.PEF/.tif}
+
dcraw -c "$f" | pnmtotiff -lzw >"${f/.PEF/.tif}"
done
done
</code>
</code>
Строка 14: Строка 14:
Аргумент '''-c''' велит ''dcraw'' посылать данные на стандартный вывод, который передается на вход ''pnmtotiff''. Выражение '''${f/.PEF/.tiff}''' подставляет имя исходного файла, меняя расширение '''PEF''' на '''tif'''. Чтобы использовать ''ImageMagick'', измените третью строку на
Аргумент '''-c''' велит ''dcraw'' посылать данные на стандартный вывод, который передается на вход ''pnmtotiff''. Выражение '''${f/.PEF/.tiff}''' подставляет имя исходного файла, меняя расширение '''PEF''' на '''tif'''. Чтобы использовать ''ImageMagick'', измените третью строку на
<code>
<code>
-
dcraw -c $f” | convert -compress lzw – ${f/.PEF/.tif}
+
dcraw -c "$f" | convert -compress lzw – "${f/.PEF/.tif}"
</code>
</code>
-
В этом случае ''convert'' использует обычную нотацию -для стандартного ввода. На man-страницах ''imagemagick'', ''dcraw'', ''netpbm'' и ''convert'' подробно описаны всякие дополнительные опции для тонкой настройки процесса.
+
В этом случае ''convert'' использует обычную нотацию "-" для стандартного ввода. На man-страницах ''imagemagick'', ''dcraw'', ''netpbm'' и ''convert'' подробно описаны всякие дополнительные опции для тонкой настройки процесса.
Эти команды предполагают нахождение всех ''PEF'' файлов в одном каталоге. Если Ваша камера сохраняет их во вложенных каталогах, используйте команду ''find'', чтобы создать список имен. Конвертированные изображения можно записать в другой каталог:
Эти команды предполагают нахождение всех ''PEF'' файлов в одном каталоге. Если Ваша камера сохраняет их во вложенных каталогах, используйте команду ''find'', чтобы создать список имен. Конвертированные изображения можно записать в другой каталог:
<code>
<code>
-
find /mount/pointof/camera -name *.PEF’ | while
+
find /mount/pointof/camera -name '*.PEF' | while
read f
read f
do
do
-
dcraw -c $f” | convert -compress lzw - ~/
+
dcraw -c "$f" | convert -compress lzw - "~/
-
photographs/tiff/$(basename $f” .PEF).tif”
+
photographs/tiff/$(basename "$f" .PEF).tif"
done
done
</code>
</code>
Здесь мы используем команду ''basename'' для извлечения имени файла из полного пути и удаляем расширения. Кавычки вокруг имен файлов нужны на случай, если имя файла или каталога содержит пробелы. '''НВ'''
Здесь мы используем команду ''basename'' для извлечения имени файла из полного пути и удаляем расширения. Кавычки вокруг имен файлов нужны на случай, если имя файла или каталога содержит пробелы. '''НВ'''

Текущая версия

Фото-групповуха

В: Мне бы хотелось иметь простую команду для перевода всех RAW-изображений в папке, скажем, /home/andy/photographs/new, в формат TIFF со сжатием LZW. Не знаю, важно ли это, но расширение RAW-файлов – PEF (в формате RAW Pentax). Энди Инглэнд [Andy England]

О: Программа для конверсии «сырых» (raw) файлов с цифровых камер называется dcraw (http://www.cybercom.net/~dcoffin/dcraw). Она преобразует RAW-форматы большинства цифровых камер в формат NetPBM PPM (Portable PixMap). Затем понадобится еще одна программа, для преобразования PPM-данных в TIFF. Такое умеют команда convert из ImageMagick и программа pnmtotiff из пакета NetPBM. На вопрос о том, которую предпочесть, проще всего ответить «Ту, что уже установлена». Dcraw должна быть в репозитории вашего дистрибутива; в противном случае загрузите исходный код и скомпилируйте/установите ее обычным порядком.

Чтобы не забивать при преобразовании жесткий диск PPM-файлами (PPM –занимающий много места несжатый формат, где используются три байта на пиксель), можно перекинуть вывод dcraw прямо в программу конверсии. Для групповой обработки с помощью ppm2tiff всей директории с файлами, запустите в терминале

 for f in ~/photographs/new/*.PEF
 do
   dcraw -c "$f" | pnmtotiff -lzw >"${f/.PEF/.tif}"
 done

Аргумент -c велит dcraw посылать данные на стандартный вывод, который передается на вход pnmtotiff. Выражение ${f/.PEF/.tiff} подставляет имя исходного файла, меняя расширение PEF на tif. Чтобы использовать ImageMagick, измените третью строку на

dcraw -c "$f" | convert -compress lzw – "${f/.PEF/.tif}"

В этом случае convert использует обычную нотацию "-" для стандартного ввода. На man-страницах imagemagick, dcraw, netpbm и convert подробно описаны всякие дополнительные опции для тонкой настройки процесса.

Эти команды предполагают нахождение всех PEF файлов в одном каталоге. Если Ваша камера сохраняет их во вложенных каталогах, используйте команду find, чтобы создать список имен. Конвертированные изображения можно записать в другой каталог:

 find /mount/pointof/camera -name '*.PEF' | while
  read f
  do
    dcraw -c "$f" | convert -compress lzw - "~/
  photographs/tiff/$(basename "$f" .PEF).tif"
 done

Здесь мы используем команду basename для извлечения имени файла из полного пути и удаляем расширения. Кавычки вокруг имен файлов нужны на случай, если имя файла или каталога содержит пробелы. НВ

  • Купить электронную версию
  • Подписаться на бумажную версию