Цифровой фотография и Linux (image linux python usb)
Ключевые слова: image, linux, python, usb, (найти похожие документы)
From: Иван Песин <ipesin at post.Lviv.UA>
Newsgroups: Russian Linux Gazette
Date: Mon, 14 Jan 2004 14:31:37 +0000 (UTC)
Subject: Цифровой фотография и Linux
Оригинал: http://gazette.linux.ru.net/lg82/tougher.html
Мое руководство по цифровой фотографии
Автор: Роб Тофер (Rob Tougher)
Перевод: Иван Песин <ipesin at post.Lviv.UA>
Содержание
* Введение
* Хранение фотографий
* Обработка фотографий
* Публикация фотографий
* Заключение
Введение
С первой же установки на моей машине в 2000-м году Linux выполняет
все, что мне нужно на компьютере. Я использую его в следующем:
* веб-серфинг и электронная почта
* разработка программного обеспечения
* написание статей
* хостинг сайтов
* цифровая фотография
Эта статья фокусируется на последнем пункте, цифровой фотографии, и
описывает применение Linux для хранения, обработки и публикации моих
цифровых фото.
Хранение фотографий
Я храню мои фотографии в двух местах: на жестком диске (в качестве
временного хранилища) и на CD-ROM. На моей машине находятся фотографии
последних нескольких месяцев и, при необходимости, их можно быстро
найти. Более старые фото я записываю на компакты, чтобы освободить
место на диске.
Для передачи фотографий с камеры на компьютер я использую Драйвер
USB Mass Storage (http://www.linux-usb.org). Этот драйвер является частью ядра Linux и позволяет
мне монтировать фотоаппарат (точнее карту памяти в аппарате -
Прим.пер.) как SCSI-устройство. После чего я переношу фотографии на
мой жесткий диск командой mv. Обычно это выглядит так:
prompt$ mount -n /dev/sdb1 /mnt/camera
prompt$ mv /mnt/camera/dcim/100msdcf/* /home/robt/docs/photographs/
prompt$ umount -n /mnt/camera
Весьма просто, так? Я монтирую камеру, переношу фото в каталог на
диске и размонтирую камеру.
(Обращаю внимание новичков и самых ленивых на опцию, которую
использовал Роб при монтировании -- "-n". Она сообщает утилите mount,
что устройство нужно монтировать без записи соответствующей информации
в /etc/mtab Это необходимо в том случае, если /etc расположен на
файловой системе смонтированной в режиме "только-для-чтения". Надеюсь,
идея ясна? Роб таким образом пытается дополнительно обезопасить
содержимое /etc от нежелательных изменений. Правда, в том случае, если
приходится вносить изменения в настройки системы, раздел необходимо
перемонтировать в режиме "чтение-запись". Прим.ред.)
(Драйвер USB Mass Storage работает только с некоторыми моделями
цифровых фотоаппаратов. У меня -- Sony DSC-F707. Многие другие камеры,
например серия Canon PowerShot, распознаются программой Gphoto2 (http://www.gphoto.org/).
Некоторые камеры вообще не работают под Linux -- все зависит от
производителя: предоставляет ли он нам, сообществу свободного ПО,
достаточно технической документации для написания драйвера).
(На сегодняшний день, если я не ошибаюсь, лишь самые дешевые цифровые
фотоаппараты не работают с Linux. - Прим.пер.)
(В любом случае, если вашу фотокамеру не распознаёт Gphoto2, вы можете
купить переходник для карты памяти и монтировать её так, как
предлагает автор. - Прим.ред.)
Когда мой диск заполняется, я переношу старые фото на CD-ROM. Чтобы
сделать это, я вставляю пустой CD-ROM в мой CD Writer и ввожу в
командной строке (обратитесь к документу CD Writing HOWTO
(http://www.tldp.org/HOWTO/CD-Writing-HOWTO.html) за информацией о
работе с вашим CD Writer):
prompt$ mkisofs -o cd_image /home/robt/docs/photographs
prompt$ cdrecord -v speed=4 dev=0,0,0 -data cd_image
(Если не хотите пользоваться командной строкой, то рекомендую
графическую оболочку к cdrecord, xcdroast. Перебрав несколько
front-end'ов для cdrecord, я остановился именно на ней. Прим.ред.)
Эти команды создают образ компакта и записывают его на матрицу.
Обработка фотографий
В фотографии важным понятием является композиция. Понятие "композиция"
включает в себя взаимное расположение объектов на фотографии. При
создании фотографии, фотограф должен решить важные вопросы:
* нужно ли включить объект X в фотографию?
* нужно фотографировать горизонтально или вертикально?
* какой должна быть глубина резкости?
Как начинающему фотографу, мне недостает навыков композиции. Обычно я
включаю в свои фотографии слишком много фона и не использую всех
возможностей и настроек камеры.
Для спасения моих плохих фотографий я пользуюсь программой GIMP (http://www.gimp.org/).
GIMP означает GNU Image Manipulation Program. Это полнофункциональная
программа обработки изображений, аналогичная программе Adobe
Photoshop. Я использую ее для:
* обрезания фотографий с некорректной композицией ("кадрирование",
если я не ошибаюсь - Прим.пер.)
* изменение насыщенности цветов на фото
* увеличения резкости размытых фотографий
Это лишь несколько возможностей GIMP, но они значительно повышают
качество моих фотографий. Ну, а я продолжаю изучать возможности GIMP.
Публикация фотографий
Я демонстрирую цифровые фотографии моим друзьям и семье. Для этого я
отсылаю мои фото на общедоступный сайт. Но перед отправкой я:
* изменяю размер фото на подходящий для веб
* создаю макеты фотографий
* генерирую HTML для отображения фотографий на сайте
Для этих целей я применяю два скрипта на Python
(http://www.python.org/). Первый называется generate_photographs
(http://gazette.linux.ru.net/lg82/misc/tougher/generate_photographs.py.txt).
Этот скрипт использует команду convert для создания макетов и фото с
измененным размером (convert входит в пакет ImageMagick
(http://www.imagemagick.org/). Обратите на него внимание). Вот полный
скрипт:
#!/usr/bin/env python
import os
#
# Печатает вызов в stdout, а потом передает его ОС.
#
def system_call(s):
print s
os.system(s)
#
# Чистит каталоги. "small"
# содержит макеты, "medium"
# содержит фото с размером для веб.
#
for d in ("small", "medium"):
system_call("rm -rf " + d)
system_call("mkdir " + d)
files = os.listdir("photographs")
for file in files:
if file != ".directory":
system_call("convert -resize 640x480 photographs/" + file + " medium/" + file)
system_call("convert -resize 160x120 medium/" + file + " small/" + file)
Второй скрипт называется generate_html
(http://gazette.linux.ru.net/lg82/misc/tougher/generate_html.py.txt).
Он перебирает фотографии и создает HTML для их просмотра. Вот этот
скрипт (для наглядности я убрал из него HTML-код):
#!/usr/bin/env python
import os
#
# убран HTML-код....
#
html = ""
files = os.listdir("photographs")
br = 0
for file in files:
html += '<a href="medium/' + file + '">'
html += '<img src="small/' + file + '"></img>\n'
html += '</a>'
if br:
html += '<br>\n'
br = 0
else:
br = 1
#
# убран HTML-код....
#
f = open("index.php","w+b")
f.write(html)
f.close()
После выполнения этих двух скриптов, я отсылаю файлы на сайт, а
друзьям -- адрес, где находятся фотографии.
Заключение
В этой статье я описал использование Linux для хранения, обработки и
публикации личных цифровых фотографий. Надеюсь, я изложил это
достаточно ясно и вы сможете извлечь из этого пользу.
Роб Тофер
Роб -- инженер-программист, пишущий на C++ и работающий в Нью Йорке.
_________________________________________________________________
Copyright © 2002, Rob Tougher. Copying license
http://www.linuxgazette.com/copying.html
Published in Issue 82 of Linux Gazette, September 2002