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 19-03-2015
jesusgandia1966 jesusgandia1966 is offline
Miembro
 
Registrado: mar 2015
Posts: 27
Poder: 0
jesusgandia1966 Va por buen camino
Obtener info de un fichero JPG

Como puedo obtener información de un fichero de imagen JPG.

El problema es que a veces un usuario intenta cargarme una imagen JPG de 32 bits de profundidad de colores y el TImage de Builder no lo acepta con el consecuente error y salida del programa.

También he intentado proteger el código que abre el cuadro de dialogo de las imágenes para controlar el error y responder con un mensaje al usuario, pero da la casualidad que se comete el error y el programa sigue sin ir al Catch(...) del try{}.

He buscado por todo el foro y en Google, pero sigo sin saber como obtengo esa información.

De ya muchas gracias.

Aunque el mi código está en C++, si alguien me puede ayudar en Delphi, yo ya pasaría la función a C++.

Código:

Código PHP:
    String Fichero fV->SV->DatSetPCRutaTPV_Ncr "Imagenes\\Logo.jpg"
    if(!
ForceCurrentDirectory
    { 
        
ForceCurrentDirectory true
        
SetCurrentDir(fV->SV->DatSetPCRutaTPV_Ncr "Galeria\\Logos"); 
        
OPDLogo->InitialDir GetCurrentDir(); 
    } 
    else 
        { 
            
SetCurrentDir(ExtractFilePath(OPDLogo->FileName)); 
            
OPDLogo->InitialDir GetCurrentDir(); 
        } 

    try 
    { 
        if(
OPDLogo->Execute()) 
        { 
            if(
ComparaExtension(OPDLogo->FileName,".jpg")) 
            { 
                
ImagenLogo->Picture->LoadFromFile(OPDLogo->FileName);//Protegiendo esta linea conta posibles fallos de IMAGEN 
                
if(ImagenLogo->Picture->Width <300>Picture->Height <150>IBSQLExec->ParamByName("P_NOMIMAGEN")->AsString "Logo"
                    
MDatos->IBSQLExec->ParamByName("P_FOTO")->LoadFromFile(OPDLogo->FileName); 
                    
MDatos->IBSQLExec->ExecQuery(); 
                    
MDatos->IBSQLExec->Close(); 
                    
MDatos->IBTransaction->CommitRetaining(); 

                    
ImagenLogo->Picture->LoadFromFile(OPDLogo->FileName); 
                    
ImagenLogoTicket->Picture->LoadFromFile(OPDLogo->FileName); 
                    
ImagenLogo->Picture->SaveToFile(Fichero.w_str()); 
                } 
                else 
                    { 
                        
fV->MenDialogo
                        
"La imagen es demasiado grande\n" 
                        "Máximo alto permitido = 150 Pixels\n" 
                        "Maximo ancho permitido = 300 Pixels"
,'!'); 

                        if(
FileExists(Fichero.w_str())) 
                        { 
                            
ImagenLogo->Picture->LoadFromFile(Fichero.w_str()); 
                            
ImagenLogoTicket->Picture->LoadFromFile(Fichero.w_str()); 
                        } 
                        else 
                            { 
                                
ImagenLogo->Picture NULL
                                
ImagenLogoTicket->Picture NULL
                            } 
                    } 
            } 
            else 
                
fV->MenDialogo
                
"Solo puede seleccionar archivos de imagen (*.JPG).\n" 
                "El archivo para el logo, no se cargará."
); 
        } 
        else 
            
fV->MenDialogo
            
"Se ha cancelado la imagen.\n" 
            "El logo no se cambiará."
); 
    } 
    catch(...) 
        { 
            
fV->MenDialogo
            
"La imagen que ha seleccionado, tiene una profundidad de color de más de 24 bits, o no es una fichero de imagen correcto.\n\n" 
            "Se cancela la operacion de cargar LogoTipo."
,'!'); 
        } 

Última edición por ecfisa fecha: 19-03-2015 a las 20:04:43. Razón: etiquetas
Responder Con Cita
  #2  
Antiguo 19-03-2015
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
jesusgandia1966,

¡Bienvenido al Club Delphi!

Te sugiero revisar la Guía de estilo de los foros, recomendada a todos los nuevos ingresos al Club Delphi.

¡Gracias por tu cooperación!

Saludos,

Nelson.
Responder Con Cita
  #3  
Antiguo 19-03-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola jesusgandia1966.

Revisa este enlace: Getting JPEG resolution without decoding the image

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 20-03-2015
jesusgandia1966 jesusgandia1966 is offline
Miembro
 
Registrado: mar 2015
Posts: 27
Poder: 0
jesusgandia1966 Va por buen camino
El enlace que sugieres, muestra información sobre la cabecera de fichero JPG, pero no me dice si el fichero está guardado con 8, 16, 24 o 32 bits de profundidad de color.

Ya miré en todo el foro y no encontré respuesta.
Responder Con Cita
  #5  
Antiguo 20-03-2015
jesusgandia1966 jesusgandia1966 is offline
Miembro
 
Registrado: mar 2015
Posts: 27
Poder: 0
jesusgandia1966 Va por buen camino
Ok

Esto Es Lo Que Quiero Obtener:
Imágenes Adjuntas
Tipo de Archivo: jpg Captura.JPG (27,5 KB, 9 visitas)
Responder Con Cita
  #6  
Antiguo 20-03-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Haz una búsqueda por EXIF.
De todas formas, dices que el problema es que no puedes mostrar imágenes de 32 bits en un TImage, ¿es eso?
Responder Con Cita
  #7  
Antiguo 20-03-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola jesusgandia1966
Cita:
Empezado por jesusgandia1966 Ver Mensaje
El enlace que sugieres, muestra información sobre la cabecera de fichero JPG, pero no me dice si el fichero está guardado con 8, 16, 24 o 32 bits de profundidad de color.

Ya miré en todo el foro y no encontré respuesta.
Pues no has mirado lo suficientemente bién.

La función que presentan en el segundo mensaje,
Código Delphi [-]
function GetJpegSize(jpeg: TMemoryStream; out width, height, BitDepth: integer): boolean;
devuelve la profundidad del color en el parámetro BitDepth.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #8  
Antiguo 20-03-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por ecfisa Ver Mensaje
La función que presentan en el segundo mensaje devuelve la profundidad del color en el parámetro BitDepth.
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
Obtener datos de un fichero PDF Lourdes.Fdez Varios 7 03-02-2010 23:51:57
obtener fechas fichero meme C++ Builder 2 27-10-2007 16:12:05
Obtener un fichero adjunto a un nodo de un fichero XML muntasil Internet 0 18-07-2006 12:57:57
Obtener info de bateria igest2000 Varios 3 19-01-2006 23:25:41
Obtener INfo del la BIOS Enan0 API de Windows 3 04-05-2005 14:48:20


La franja horaria es GMT +2. Ahora son las 10:04:13.


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