PDA

Ver la versión completa : Programa para obtener info de un directorio de imagenes.



NoobLuck
06/12/2005, 03:39
EDITO: Segunda parte terminada.

Pues ya he hecho la primera parte, que escanea un directorio y te muestra información sobre las imágenes en él. Va un poco lento por que he usado la lib_SDL_image, y para obtener los datos primero tengo que cargar las imágenes en una Surface. Si alguien conoce otra libreria que pueda leer la info sin cargar... Probé las Devil, pero nada de nada, hay que cargar la imagen. ¿Teneis solución? De momento la velocidad es aceptable.

El programa tb comprueba que la extension de la imagen corresponda con el tipo de la misma. Si no corresponde avisa.

Para que lo saque en un fichero redirigís la salida estándar, si alguna imagen da error conviene arreglar nuestras iagenes y hacer un archivo de nuevo, sin los errores.

Hay que estar en el directorio que se quiere comprobar, tb tiene una opción recursiva.

La segunda parte compararia un directorio con el fichero dado y buscaria las diferencias y las imagenes que no se corresponden.

Nuevas versiones..., se agredecen comentarios sobre el codigo, es GPL, va en linux, hay que hacer make y make install.

En resumen:


listimage -R
Da algo como esto:

DIR . 4 0
./FMA_1280x1024.jpg 1280 960 24
./Splash-RedLight.png 450 320 32
./hinata.jpg 241 214 24
./hinata50x50.jpg 50 44 24
./body.png 320 240 24

OK!
Que viene a ser anchura altura y profundidad de color.
En los directorios el número de archivos, seguido del número de directorios.

La segunda parte, para el archivo que genera el primer programa cuando no hay errores, compara esa información con la de los archivos del árbol de directorios con raíz en el directorio actual.

~$ cd pics

~/pics$ ls
FMA_1280x1024.jpg hinata50x50.jpg hinata.jpg Splash-RedLight.png

~/pics$ listimages -R > lista

OK!
~/pics$ cat lista
DIR . 4 0
./FMA_1280x1024.jpg 1280 960 24
./Splash-RedLight.png 450 320 32
./hinata.jpg 241 214 24
./hinata50x50.jpg 50 44 24

~/pics$ checkimages lista
1: .
2: ./FMA_1280x1024.jpg 1280 960 24
3: ./Splash-RedLight.png 450 320 32
4: ./hinata.jpg 241 214 24
5: ./hinata50x50.jpg 50 44 24

OK!

~/pics$ emacs lista

~/pics$ cat lista
DIR . 4 0
./FMA_1280x1024.jpg 1280 960 24
./Splash-RedLight.png 452 321 38
./hinata.jpg 241 214 24
./hinata50x50.jpg 50 44 24

~/pics$ rm hinata50x50.jpg

~/pics$ checkimages lista
1: .
2: ./FMA_1280x1024.jpg 1280 960 24
3: ERROR: ./Splash-RedLight.png has incorrect width.
3: ERROR: ./Splash-RedLight.png has incorrect height.
3: ERROR: ./Splash-RedLight.png has incorrect depth.
4: ./hinata.jpg 241 214 24
5: ERROR: Can't open ./hinata50x50.jpg for read: Couldn't open ./hinata50x50.jpg
5: ERROR: Can't load ./hinata50x50.jpg: Couldn't open ./hinata50x50.jpg
Esto es como funciona y ya está.
En el readme y la ayuda está todo explicado, lo que hay que cumplir para que funcione y los tipos de imagen soportados.

NoobLuck
07/12/2005, 08:08
He atualizado el codigo por que era ineficiente y le he quitado unas 25 lineas.
Nadie sabe de una libreria que lea datos de las imágenes sin cargarlas?

En teoria el programa deberia ir en la GP2X sobre el emulador de terminal de linux que acaba de salir, alguien lo puede probrar?

ArTo
07/12/2005, 21:41
Esto en teoría habría que compilarlo con un compilador cruzado para arm no? Si es así, yo no puedo probarlo ya que tendría que aprender a usarlo y estoy con exámenes, en navidad quizá me ponga, lo siento :(

Saludos...

NoobLuck
08/12/2005, 02:11
Si me compila para GP2X, pero no lo voy a poner por que es cosa de cada uno compilar sus programas y ver lo que compila. Además no tiene mucho sentido ni utilidad ejecutar esto en el terminal de la GP2X. No obstante si alguien desea hacerlo el programa tiene un makefile.

NoobLuck
10/01/2006, 03:13
Ya está acabao, ¿existe algun visor de fotos, estilo pase de diapositivas para gp2x?, lo siguiente seria hacer este visor y que mostrara información del directorio actual, así como de las fotos visualizadas. Permitiendo navegar por la carpeta dentro del programa.

antidark
10/01/2006, 03:40
No solo trae el de serie , esperemos que te puedan responder, seria una gran utlidad

JC