Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-05-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
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
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #2  
Antiguo 22-05-2007
Avatar de BuenaOnda
BuenaOnda BuenaOnda is offline
Miembro
 
Registrado: feb 2006
Ubicación: La Serena - Chile
Posts: 347
Poder: 19
BuenaOnda Va por buen camino
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.
Responder Con Cita
  #3  
Antiguo 22-05-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Cita:
Empezado por BuenaOnda
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.
En realidad es ver si el archivo esta dañado.
Podrias ponerme un ejemplo de como usar TRY / EXCEPT para capturar cuando esta dañado?

A ver, yo lo entiendo asi, es correcto?

Código Delphi [-]
...
try 
 Image1.LoadFromFile('c:\imagen.jpg');
except
 showmessage('Archivo Dañado');
 Image1.LoadFromFile('c:\mi_imagen_para_el_error.jpg');
end;
...

Saludos y Gracias
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #4  
Antiguo 22-05-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
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.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 22-05-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Cita:
Empezado por Neftali
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.
Mmm, y como sería eso? Mi forma esta mal? Lo que quiero hacer es que si el archivo de imagen no es reconocido, me ponga la imagen de error.
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;

Última edición por MaMu fecha: 22-05-2007 a las 09:42:02.
Responder Con Cita
  #6  
Antiguo 22-05-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Esto es lo que hice, segun entiendo yo, pero no me captura le excepcion.
Tengo añadida JPEG en el uses.

Código Delphi [-]
...
try
 Image1.Picture.LoadFromFile('c:\imagen.jpg');
except
 on EInvalidGraphic do
  begin
   Image1.Picture.Graphic := nil;
  DeleteFile('c:\imagen.jpg');
  end;
end;
...
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #7  
Antiguo 22-05-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por mamu
... y como sería eso? Mi forma esta mal?
Más o menos me refería a eso.
No vi tu respuesta.
Yo intentaría capturar el tipo concreto del error; Algo así:

Código Delphi [-]
try
  Image1.Picture.Bitmap.LoadFromFile('C:\Temp\Readme.bmp');
except
  on E:EInvalidGraphic do begin
    MessageDlg('Archivo Dañado o no es un tipo de imagen reconocido.', mtError, [mbOK], 0);
    Image1.Picture.Bitmap.LoadFromFile('c:\mi_imagen_para_el_error.jpg');
  end;
  on E:EFOpenError do begin
    MessageDlg('El archivo de imagen no existe.', mtError, [mbOK], 0);
  end
  else begin
    MessageDlg('Error desconocido', mtError, [mbOK], 0);
  end;
end;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #8  
Antiguo 22-05-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
No importa como intente la captura de la excepcion, siempre me sale:

'JPEG error #42'

saltando todo el codigo de tratamiento.

Why?!?!
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Validar Nif Colgueit OOP 12 10-05-2006 02:50:28
Validar Fecha Gustavo Gowdak OOP 7 03-05-2006 19:24:37
Validar un campo gluglu Varios 3 14-01-2005 15:43:58
validar sin exepciones gustavo2 Conexión con bases de datos 2 30-01-2004 15:54:56
validar en qry alcides SQL 2 06-01-2004 18:11:19


La franja horaria es GMT +2. Ahora son las 11:45:24.


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
Copyright 1996-2007 Club Delphi