sábado, junio 23, 2007

Técnicas de enfoque

Muchos días sin pasarme por aqui, he estado enfermo y aunque este fin de semana ya estoy mejor, me apetece mas ir a hacer fotos que programar, además estoy esperando que me llegue un objetivo nuevo.... ¡¡¡ Que ganas!!!

Una vez disculpado, una anotación de un artículo muy majo que he leido sobre distintas técnicas para mejorar el enfoque en photoshop. Es un artículo antiguo de quesabesde.

Lo dejo anotado porqué lo recuperaré y experimentaré un poco.

http://www.quesabesde.com/camdig/articulos.asp?articulo=120

Salududus

sábado, junio 16, 2007

Otra foto

Bueno, esta semana no me ha apetecido programar mucho, pero hoy he estado probando herramientas open source para tratar raws y generar un hdr, la aplicaciones en cuestión son
  • ufraw
  • qtpfsgui

y este es el resultado

Sala capitular Monasterio Veruela

Tengo que mejorar, el que me ha quedado un poco de ruido en las zonas oscuras, me imagino que seré yo y no las herramientas.

Si alguien sabe como.... ahí teneis los comentarios

miércoles, junio 13, 2007

Mas opciones

Mirando como extraer los datos de los ficheros CR2, me he encontrado con dos herramientas que me pueden ir mucho mejor para todo lo que estoy haciendo.

Para extraer los thumbnails de los ficheros CR2 el dcram, algo tan sencillo como:

dcraw -e img_1222.cr2

Nos extrae el thumbnail adecuado. En cuanto al Tiff y el jpeg, lo podemos transformar a traves de la librería Pil.

Una cosa que me ha hecho plantearme también la forma de sacar la información es el script en perl exiftool. Me parece bastante mas completa la información que el exifprobe. con lo que estoy dudando en cambiarme.

Una cosa que me planteo, es que si toda la información de la foto, está en ella misma, no voy a sacar casi ningún dato de la misma, cuando quiera extraré los datos de la misma on-line, me imagino que la cargaré poco a poco.

Me gustaría abstraer el tipo de fichero independiente de que sea Tiff, CR2 o Jpeg, con lo que me tendré que mirar el polimorfismo en python.

De momento crearé una clase para el manejo de ficheros fotograficos, solo con la extracción de los de los thumbnails y que llame a un método u otro cuando dependiendo del tipo de foto.

Extraer los thumbnails

He tomado alguna nota sobre las marcas del fichero exif, para la extracción de los diferentes thumbnails, parece ser que las marcas necesarias son StripOffsets con la posición donde empieza el jpeg y StripByteCounts con la longitud del mismo.

Me llama la atención que en los CR2 parece que hay hasta 4 jpegs incluidos en la foto.

En cuanto a los ficheros Tiff, parece ser que los abre directamente la librería gráfica PIL, pero tengo que asegurar que se puede cuando las profundidades de color son 16 bits por canal y además hay capas guardadas.

Son mis lineas de investigación ahora...

martes, junio 12, 2007

Buenas nuevas y próximos pasos

Hola,

No he programado mucho este fin de semana, solo lo suficiente para ya tener importadas un número de fotos con exif, y los ficheros quedan en distintos directorios, por año/mes/día.

El próximo paso está claro, la creación de los thumbnails, para los jpeg, es muy sencillo, solo hace falta utilizar la librería de manejo de imágenes de python PIL (python imaging library) en cuanto a los ficheros Tiff y a los CR2 de canon tengo que extraer los jpeg embebidos. No creo que sea muy complicado porque la utilidad exifprobe te dice tanto la longitud como la posición de inicio el jpeg incustrado. Ya os contaré.

La verdad que tengo muchas ganas de continuar, ya que luego ya empiezo con la programación de las vistas, hoy he estado pensando como hacerlo, he pensado que una buena forma, sería tipo calendario en la que pudieramos tener una vista en tipo año, en la que se pudiera seleccionar el mes, con miniaturas pequeñas, 4 o 5 por fila y luego una vista mes, en la que selecionaramos el día en la que pondríamos solo uno por fila, con comentarios al lado.

He mirado las opciones de ir cargando las fotos poco a poco a través de AJAX utilizando seguramente el serializador de JSON de django.

Además estoy mirando el tema de los test de regresión....

Muchas cosas y tan poco tiempo, ya os cuento

viernes, junio 08, 2007

Script interesante

Hoy no he hecho nada, pero he leido una cosa que creo que puede ser interesante.

Uno de los problemas que tengo al utilizar django, es como depurar cosas sin necesidad de utilizar el web, como llamar a las clases que utiliza para los modelos, sin tener que preparar ninguna vista, además de poder utilizar el depurador del eclipse, con ejecución paso a paso y todas esas cosas.

Pues puede que en este artículo: script for run a django task tenga parte de la solución. Como importar el entorno de django en un programa normal de python y así poder depurar mejor las clases que vas a utilizar en tu web.

Como tengo que investigarlo lo apunto aqui para que no se me olvide.

Saludos

jueves, junio 07, 2007

La interfaz admin de django

Una de las cosas por las que me encanta django, es por el interfaz que te crea automaticamente si quieres visualizar a través de web tu base de datos. Solo hace falta añadir una subclase Admin a las clases heredadas de los modelos.
Por ejemplo en mi caso:

class Photo(models.Model):
date_time_original = models.DateTimeField()
make = models.CharField(maxlength=50)
model = models.CharField(maxlength=50)
exposure_time = models.CharField(maxlength=50, null=True)
iso = models.CharField(maxlength=50, null=True)
f_number = models.CharField(maxlength=50, null=True)

class Admin:
pass

Esto ya me crea la infraestructura necesaria para visualizar, añadir y borrar registros en la base de datos a través de un interfaz web.

Pero hoy me he encontrado un problema, o simplemente viene de no haberme leido toda la documentación o de estar usando la versión de desarrollo.

No es es capaz de visualizarme en el interfaz de administración los campos de tipo FileField o CharField
este campo consigue darme error en el interfaz de administración
file = models.CharField(maxlength=100, null=True)

Continuaré investigando a ver como se soluciona el tema, pero claro, eso será otro rato libre que tenga.

Nota: También me voy a tener que mirar el blogger para que me respete las tabulaciones a la hora de mostrar trozos de código ya que en python es imprescindible

Actualización (8/06 20:00): Como era lógico el problema era mío, no de django, en el momento que empiece a ver las limitaciones del interfaz, será que ya se bastante, hasta entonces me imagino que continuaré pegandomela.

El problema en cuestión es que no se en que circustancias, no se me había actualizado la base de datos aunque había hecho un manage.py flush y syncdb.

Cuando he revisado la estructura de las tablas de la base de datos, he visto que no se me habían actualizado los cambios.

De momento, solución radical, después de cambiar la base de datos, la borro (es un fichero porqué he empezado en sqlite) y la vuelvo a crear.

Ahora funciona bien y ya tengo las 2 tablas casi rellenas, a falta de los tamaños de las fotos, y sacar los thumbnails del los ficheros CR2, solo me queda para una primera importación el mover los ficheros que puedo importar automáticamente a sus lugares de destino.

miércoles, junio 06, 2007

Fotos del Pantano

Como me he pasado los ratos libres desde el domingo hasta hoy editando fotos, pues que mejor que poner una de las que hice en el pantano a los windsurfistas el sábado.

Windsurf en la sotonera (I)

Hoy si puedo continuaré con la aplicación.

Un saludo

lunes, junio 04, 2007

Notas para la manipulación de la base de datos

He estado investigando las posibilidades que me ofrece el API de django a la hora de insertar nuevas fotos en la base de datos.
Me va a ser util el get_or_create() en el cual intentas traerte un registro de la base de datos y sino lo crea.
Interesante también el select_related() que te selecciona además de la tabla en cuestión, las tablas relacionadas mediante foreing_key.

Por otro lado he estado investigando, como mover los ficheros en python, en este caso el módulo necesario es shutil, que implementa todas las funciones necesarias cp, mv....

Un fleco que me queda es comprobar la existencia del directorio, antes de mover y sino, crearlo.

Ahora toca: introducir este código y luego mirar la extracción de los thumnails en los ficheros CR2, así como las dimensiones en los ficheros JPEG

Stay tuned....

sábado, junio 02, 2007

Mas lento de lo previsto

La herramienta de importación me está llevando mas de lo previsto, eso que no he estoy teniendo en cuenta mas que me vaya para mis 2 cámaras fotográficas. Me estoy encontrando que las etiquetas exif que utiliza cuando es un fichero CR2 o TIFF son diferentes que los jpegs. Cosas como las dimensiones de las fotos no se marcan igual, me imagino que en JPEG podrás sacarlas directamente, aunque aún no sé como.

Otra etiqueta que me ha sorprendido el que estuviera distinta en la IXUS 500 y en el EOS 350D, es el iso utilizado en la foto.

Por otro lado estoy contento, porque ya importo correctamente todos los formatos en la base de datos en la tabla PHOTOS, ahora me quedaría la tabla VERSIONS.

También tengo ya en cuenta el que tengan los ficheros CR2 el fichero xmp asociado.

Empiezo a ver cercano el tener mis 5000 fotos totalmente organizadas como yo quiero y con buenos backups.

Luego empezaré con las fotos que están sin datos exif, con una importación manual así como el interfaz web para la visualización y la edición remota.

En fin continuamos currando. De momento esta tarde me voy a hacer fotos al pantano que están mis amigos los surferos, a ver que tal.