Validar Imagen
Yo estoy haciendo un programa que muestra archivos de imagenes JPG y BMP en un TImage, pero como puedo hacer para validarlos, puesto a que yo, por ejemplo, puedo renombrar un archivo.txt a un archivo.jpg/archivo.bmp y me genera error al intentar cargalo, esto lo hago a modo de "error de lectura" como para poder contemplar esto. Existe alguna forma, es decir, hay algun encabezado o dato que pueda verificar que si existe en el archivo JPG o BMP, me lo valide y sino que lo descarte?
Saludos y gracias |
Para validar que un archivo exista puedes utilizar la funcion FileExists, pero si tu pregunta es que valide que el archivo de imagen no este dañado, no se si podrá, tendrías que crear un captura de errores TRY / EXCEPT, esa es la forma que utilizo, espero que te sirva.:D
|
Cita:
Podrias ponerme un ejemplo de como usar TRY / EXCEPT para capturar cuando esta dañado? A ver, yo lo entiendo asi, es correcto?
Saludos y Gracias |
Podrías probar a mostrarlo en un TImage (puede estar oculto si no te interesa que se vea) a ver si genera algun error, posiblemente un EInvalidGraphic.
|
Cita:
|
Esto es lo que hice, segun entiendo yo, pero no me captura le excepcion.
Tengo añadida JPEG en el uses.
|
Cita:
No vi tu respuesta. Yo intentaría capturar el tipo concreto del error; Algo así:
|
No importa como intente la captura de la excepcion, siempre me sale:
'JPEG error #42' saltando todo el codigo de tratamiento. Why?!?! |
Cita:
:confused: :confused: :confused: |
Pues he probado con un Readme.txt renombreado a Readme.bmp y readme.jpg y este código y me lo captura perfectamente.
Desactiva que salten las excepciones en diseño (Stop on Delphi exceptions) en el IDE. |
Hice todo, desactive eso del IDE, lo que yo hago es lo siguiente:
Pero no me borra el archivo que esta mal, me lo deja. Porque? |
Interesante código manu, pero como no te andes con cuidado puedes quedarte sin fotos :D En concreto, los errores EOutOfResources y EOSError pueden producirse aunque el archivo sea valido, solo hace falta que pilles al windows en un "mal momento".
Por otro lado, comprueba que: es verdaderamente la ruta del archivo. |
Cita:
Estaría bien que comprobaras antes de borrar si el archivo existe... |
Para saber desde el principio si un fichero es una imagen (tenga la extensión que tenga) lo mejor es abrirlo en modo binario y comprobar si tiene determinada característica propia de ese archivo. Por ejemplo, los jpg siempre tienen la cadena JFIF en la 7ª posición:
Cada formato de imagen tiene sus características, que se pueden averiguar con cualquier editor hexadecimal. |
Cita:
|
La franja horaria es GMT +2. Ahora son las 20:47:44. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi