fn es software libre y está basado en software libre. Se distribuye con licencia "Dominio Público".
Las características que me parecen más importantes son:
Para ponerlo en marcha lo más rápido es tener un sistema operativo Debian, aunque cualquier otro sabor de GNU/Linux o *BSD debería valer perfectamente, con las oportunas adaptaciones de esta documentación. Sin embargo, el programa solo ha sido probado en Debian.
El sistema se divide en dos fases: la de preparación de las fotos y la de servirlas vía web. Para preparlas es necesario disponer de un servidor X Window (es decir, de un entorno gráfico). Para servirlas es necesario disponer de un servidor web con PHP (versión 5 al menos) con permiso para instalar y ejecutar algunos programas.
tgz
, hay que
comenzar por descomprimirlo. Vamos a imaginar que entramos en el sistema como
usuario root. Hemos descargado el archivo fn-6.0.tgz
y lo
hemos copiado en el directorio /root/tmp/
. Nos situamos en ese
directorio y tecleamos
tar xzf fn-6.0.tgz
Se crea el directorio fn-6.0
, que contiene todos
los archivos necesarios.
En el directorio fn-6.0
obtenido tras la descompresión se
encuentra el archivo leeme.txt
(quizá ya lo has leído) y estos
directorios:
En un sistema Debian de escritorio ya suele estar instalado, de modo que no hay que hacer nada (si lo has quitado, es que también sabes ponerlo). Uso Python 2.
Si en tu sistema no lo tienes, visita python.org y busca tu mejor solución.
Para instalarlo en Debian, teclea como root
apt-get install python-qt4
Si en tu sistema no lo tienes, visita riverbankcomputing.com y sigue las instrucciones.
Para instalarlo en Debian, teclea como root
apt-get install imagemagick
Si no lo tienes en tu sistema, consulta en imagemagick.org
Para instalarlo en Debian, teclea como root
apt-get install libjpeg-progs
Si no lo tienes en tu sistema, consulta en uu.net, aunque los binarios de Debian incluyen parches adicionales.
Para instalarlo en Debian, teclea como root
apt-get install jhead
Si en tu sistema no lo tienes, visita sentex.net/~mwandel y sigue las instrucciones
B. Instalar los archivos propios de fn. Sitúate en el directorio
fn-6.0
que se creó al descomprimir el archivo tgz. Por ejemplo:
cd /root/tmp/fn-6.0
Ejecuta el script fn-instala-preparar.sh
que se encuentra en el
directorio instalar
. Así:
./instalar/fn-instala-preparar.sh
Esto copia cuatro programas al directorio /usr/local/bin
, de
modo que estarán disponibles para todos los usuarios.
A1. Software necesario para que funcione fn
apt-get install apache2-mpm-prefork
Si en tu sistema no lo tienes, visita apache.org y busca la solución más adecuada.
Podría valer cualquier otro servidor web que admita PHP, pero yo no lo he probado.
En Debian se instala con
apt-get install libapache2-mod-php5
Si en tu sistema no lo tienes, visita php.net y elige la descarga que más te convenga.
fn-coloca.php
.
En Debian se instala con
apt-get install php5-cli
En Debian se instala con
apt-get install php5-sqlite
En otros sistemas es posible que ya esté instalado; si no lo está, consulta php.net y sigue las instrucciones.
A2. Software recomendado
config.php
.
Para que funcionen correctamente las URL cortas el servidor web debe tener activado un sistema de redirecciones. En el servidor Apache el módulo se llama mod_rewrite y en un sistema Debian se activa con
a2enmod rewrite
En Debian se instala con
apt-get install sqlite3
Si en tu sistema no está disponible, consulta sqlite.org
B. Instalar los archivos propios de fn.
Debemos comenzar por saber cuál es el DocumentRoot
del servidor
web, es decir, el directorio del sistema de archivos que sirve cuando le piden
por web el archivo raíz. Se define en el archivo de configuración de Apache,
así que en Debian lo puedo saber así:
grep DocumentRoot /etc/apache2/sites-enabled/000-default
En mi sistema obtengo esta línea (hay alguna más, pero son comentarios):
DocumentRoot /home/web
Sitúate en el directorio fn-6.0
que se creó al descomprimir el
archivo tgz. Por ejemplo:
cd /root/tmp/fn-6.0
Ejecuta el script fn-instala-servir.sh
que se encuentra en el
directorio instalar
escribiendo como parámetro el DocumentRoot que
acabamos de encontrar, siempre sin terminarlo en el carácter barra. Así (en mi
caso):
./instalar/fn-instala-servir.sh /home/web
Esto crea en el DocumentRoot el directorio fotos
, y prepara en
él una estructura de directorios y archivos. Te aconsejo que eches un vistazo a
lo que se ha creado, para familiarizarte un poco con el sistema. Cambia el
owner del directorio según tus preferencias.
Si en este momento llamas con un navegador a tu servidor web y le pides el
directorio fotos
, ya deberías ver la página inicial de fotos
digitales. Si no la ves, te aconsejo que añadas index.php
a la
lista de archivos que debe buscar Apache si se le pide un directorio.
C. Preparación de la administración vía web
Este paso es necesario para poder administrar las series de fotos vía web.
unset HISTFILE
cd /home/web/fotos
./generaContrasena.php EstaEsTuContraseña
contrasena.php
y asigna a la variable
$Contrasena el valor de la salida de la orden anterior.
Cuando se va a utilizar la administración vía web, el usuario que ejecuta el
servidor web (normalmente, www-data) debe tener permisos de escritura en
el archivo fn.db
y si además se desea cargar nuevas series con
este interfaz, también debe tener permisos de escritura en los directorios
fotos
, fotos/indices
y fotos/carga
.
Estas comprobaciones son muy importantes, porque si los permisos no son los
adecuados el sistema de administración vía web no funcionará pero no será
aparente por qué.
index.php
y también muchos de los parámetros del sistema editando
el archivo config.php
.
~/dat/fotos/
, cada día en un directorio distinto. Como muchas
cámaras ponen nombres demasiado largos y complicados que no me parecen
apropiados, empiezo por cambiarlos. Esto no es estrictamente necesario, tú
puedes poner a las fotos los nombres que quieras (sin espacios ni acentos, ya
que luego hay que servirlas vía web).
Para hacer una simulación de los cambios de nombres primero hago
fn-numera.py 1 s
Si veo que todo va a mi gusto, realizo los cambios con
fn-numera.py 1 r
El programa fn-numera.py
cambia los nombres no solo de los
archivos JPG, sino de cualquier otro que pueda generar la cámara.
Esto deja los nombres como 0001, 0002, etc, y extensión jpg
,
en minúsculas.
A veces hago en un día fotos en varias tarjetas de memoria y necesito renumerar algunas fotos a partir de un determinado número; para eso uso, por ejemplo:
fn-numera.py 120 r
para que la primera foto se llame 0120.jpg
, la segunda
0121.jpg
, etc. Así ya puedo tener todas las fotos de un día
numeradas correlativamente y en un mismo directorio.
fn-descarga.py
.
Me sitúo en el directorio en el que quiero que queden todas las fotos y voy invocando el script una vez por tarjeta. Por ejemplo:
fn-descarga.py /mnt/tarjeta1
Este programa va copiando archivos (solo los que tienen extensión jpg) al
directorio y les va asignando nombres que no interfieren unos con otros. Cuando
están todos descargados, ya les puedo aplicar fn-numera.py
.
chmod 444 *
~/tmp
con las
fotos del día 2003-03-11:
cd ~/tmp rm * cp -a ~/dat/fotos/2003-03-11/* . chmod 644 * |
qiv
, personalizado con el archivo
qiv-command, que arranco así:
qiv -ft *.jpg
La opción "f" significa "Pantalla completa" y la opción "t" significa
"Ajustar imagen a pantalla". Para eliminar una foto pulso "d"; realmente
qiv
la traslada a .qiv-trash
, de modo que se puede
recuperar pulsando "u". Cuando tengo que girar una foto, pulso la tecla "1"
(gira -90 grados) o "2" (gira 90 grados). Otra pulsación útil es "0", que
muestra la información EXIF de la foto.
Si la cámara ha almacenado información sobre la orientación en que se ha efectuado la toma, un modo automático de pasar a formato vertical las fotos que lo necesiten es con la orden
exifautotran *
.qiv-trash
, en el que están las fotos que no deseo
mostrar:
rm -r .qiv-trash
fn-prepara.py
, que crea miniaturas y
versiones medianas de las imágenes. El índice creado se llama
indice.jpg
y las imágenes medianas tienen extensión
jpeg
. Para usarlo, te sitúas en el directorio en que están las
imágenes y lo lanzas así:
fn-prepara.py
Este programa admite ajustar algunos parámetros internos, mira el código y ajústalos a tu gusto.
Cuando lo ejecutas, tiene este aspecto:
Puedes manejar el programa a tu gusto y cuando te parezcan adecuados los
parámetros, pulsar el botón Preparar
.
Cuando el programa termine verás la aparición de las imágenes medianas y el índice:
chmod 664 *.jpeg
fn-comenta-py
:
./fn-comenta.py
Tiene este aspecto:
Con este programa puedes ir añadiendo comentarios a las fotos que quieras.
No uses las comillas en los comentarios, porque el programa fallará. Tienes
que acordarte de pulsar el botón Grabar
tras hacer cambios en
los comentarios, porque el programa no te lo va a recordar.
jpg
(las fotos originales y el
índice) y jpeg
(las imágenes medianas) al directorio de carga de
fotos del servidor, [DocumentRoot]/fotos/carga/
. Por ejemplo, con
scp
o por FTP.
fn-coloca.php
, que necesita como
parámetro la descripción que se quiere dar a la serie, que como suele ser una
frase, habrá que ponerla entre comillas. Por ejemplo:
./fn-coloca.php "Fotos del día de la simetría"
El script fn-coloca.php
asigna como nombre de la serie la fecha
de la primera foto, con formato AAAA-MM-DD.
https://tuservidor/fotos/admin.php
Observa que recomiendo entrar con el protocolo https, ya que hay que escribir una contraseña; pero si no lo tienes activado en tu servidor, puede valer el protocolo http.
Identifícate con la contraseña que determinaste en la instalación.
Refrescar
siempre devuelve a la pantalla inicial
de administración.
Terminar
permite concluir la administración y
volver a la página de índice de las series.
Cargar
, el programa examina el
directorio de carga y propone los datos de la nueva serie.
Se pueden modificar al gusto y si se pulsa el botón Insertar
se
añade la serie al sistema.
Nota: la serie no se puede llamar "doc", "imagen", ni "indices", ya que son nombres de directorios que usa el sistema.
Listar
ofrece una lista con todos los datos de
todas las series:
Si está activado JavaScript en el navegador, al colocar el puntero
sobre el icono Ver
aparece el índice de la serie correspondiente.
Editar
, se pasa a ver los datos de
la serie que se haya elegido:
Modificar
se almacenan los cambios en la base de datos fn.db
fotos
del servidor se usan varios archivos:
index.php
. Es el archivo de inicio, el primero que verá el
usuario. En él aparece el listado de todas las series de fotos junto a sus
descripciones.
navegacion.php
. Es la clave de todo el sistema. Se encarga de
mostrar el índice de cada serie, las fotos medianas y las fotos originales.
listado.php
. Muestra nombres, vínculos y tamaños de todas las
fotos de una serie.
config.php
. El archivo de configuración. El administrador del
sistema puede modificarlo a su gusto.
fn.php
. Rutinas PHP de apoyo a la programación general del
sistema.
contrasena.php
. Solo contiene el hash de la contraseña de
administración vía web.
admin.php
. El programa que maneja la administración vía web.
fn.db
. Base de datos en formato SQLite3 que contiene los
nombres y descripciones de las series.
.htaccess
. Un archivo de configuración de Apache que impide la
descarga vía web del archivo fn.db
y activa el sistema de
redirecciones de Apache que permite usar URL cortas en todo el sistema.
fn-coloca.php
. El programa PHP CLI que coloca la serie que esté
almacenado en el directorio carga
.
admin.php
. El programa de administración de las series de fotos.
admin.js
. El apoyo JavaScript al programa de administración.
generaContrasena.php
. El programa PHP CLI que genera el hash
de una contraseña.
password.php
. La librería de Anthony Ferrara que garantiza el
correcto funcionamiento con diferentes versiones de PHP del método de cifrado
bcrypt que se usa para calcular el hash de la contraseña.
fotos
del servidor se usan cuatro directorios:
doc
. La documentación del sistema. El administrador puede
eliminar este directorio si le parece oportuno.
imagen
. Aquí se guardan las imágenes que necesita el sistema.
indices
. Donde se almacenan las imágenes índice de cada serie.
carga
. Hay que subir a este directorio las fotos de una nueva
serie que se quiera incorporar al sistema.
reducidas
en el que se almacenan las imágenes medianas y
se añade una imagen jpg en el directorio indices
.
fn.db
Se crea usando el archivo fn.sql, con esta orden:
sqlite3 fn.db ".read fn.sql"
Estas son las órdenes SQL del archivo fn.sql
:
CREATE TABLE serie ( num INTEGER, nombre TEXT, descripcion TEXT, visible INTEGER DEFAULT 1, cantidad INTEGER ); CREATE INDEX n ON serie(num); |
Explicación de los campos de la tabla serie:
El modo más sencillo de ver el contenido de esta base de datos es usar la orden
sqlite3 fn.db "select * from serie;"
fn-prepara.py
Directorio
, las examina todas para determinar si tienen
formato 4:3 o 3:2 y rellena la sección Formato
con la información
obtenida.
Calcula el número de columnas y filas que puede tener la imagen índice partiendo del mínimo cuadrado que pueda englobar a todas las imágenes y quitando tantas filas como sea posible.
Utiliza una variable interna para calcular las dimensiones de las miniaturas en el índice y otra para proponer el tamaño de las imágenes medianas.
Esta actualización se hace entrando al sistema con el usuario root
fn-6.0.tgz
:
cd /root/tmp/fn-6.0
./actualizar/fn-elimina-preparar.sh
./instalar/fn-instala-preparar.sh
Esta actualización se hace entrando al sistema con el usuario que normalmente se utilice para gestionar la web.
fn-6.0.tgz
:
cd /root/tmp/fn-6.0
Ejecuta el script fn-actualiza-servir.sh
que se encuentra en
el directorio actualizar
indicando el DocumentRoot del servidor
web. Por ejemplo, así:
./actualizar/fn-actualiza-servir.sh /home/web
config.php
todo lo que personalizaste
para fn 5.0 y que aún está en el archivo config.php.seg
.
Recuerda que ahora está en UTF-8, quizá tengas que cambiar la codificación.
config.php.seg
.
fn-actualiza-basedato.py
, que está en el directorio
actualiza
, se encarga de hacer esa conversión.
fotos-ayuda.pl
utiliza Gtk-Perl.
fotos-prepara.pl
utiliza demasiada memoria
y demasiado tiempo para generar la imagen índice.
fotos-*
se han renombrado fn-*
fn-ayuda.pl
utiliza Gtk2-Perl.
fn-prepara.pl
ha sido optimizado y utiliza
mucha menos memoria y mucho menos tiempo para generar la imagen índice que
antes.