Mostrando resultados del 1 al 10 de 10

Tema: Leer fichero .CR2 "RAW" desde Visual Basic

  1. #1
    Avatar de Kalo
    Kalo está desconectado Primer Dan
    Fecha de Ingreso
    sep 2007
    Ubicación
    Museros (Valencia)[País Valencià][Espanya][Europa], etc.etc.
    Mensajes
    1.241

    Predeterminado Leer fichero .CR2 "RAW" desde Visual Basic


    Bueno, primero y antes de nada, decir que como no se muy bien donde poner este mensaje lo pongo aqui y si algún moderador no lo ve oportuno que lo mueva donde le corresponda ...

    Pues eso, que tengo un programa hecho con Visual Basic en el cual tengo clasificadas las fotos y videos y en el cual se pueden ir visualizando las fotos pero el Visual Basic no reconoce las fotos en RAW o por lo menos yo no se como hacerlo.

    Este mensaje está puesto tambien en el canal de Visual Basic, pero tampoco obtengo respuesta.

    Si alguien sabe de algun OCX o DLL para visualizar los fichros .cr2 pues estupendo ... y si no ... pues ajo y agua ...
    Casi "to" en venta.

  2. #2
    Avatar de Jumper
    Jumper está desconectado Usus est magister optimus
    Fecha de Ingreso
    ene 2008
    Ubicación
    Madrid
    Mensajes
    377

    Predeterminado

    La previsualización de las imágenes se hace a partir del jpeg que tienen incrustado los raw, así que con la llamada adecuada deberías poder visualizar estas miniaturas. Para visualizar los raw, interpretarlos y en definitiva hacer una revelado para visualizarlos, podrías ayudarte de dcraw que es un revelador libre para formatos raw. Lo siento pero no te puedo especificar más.

  3. #3
    Avatar de Kalo
    Kalo está desconectado Primer Dan
    Fecha de Ingreso
    sep 2007
    Ubicación
    Museros (Valencia)[País Valencià][Espanya][Europa], etc.etc.
    Mensajes
    1.241

    Predeterminado

    Gracias jumper pero lo que necesito es visualizar ya que revelar me apaño muy bien con el DPP
    Casi "to" en venta.

  4. #4
    Avatar de jaguarhouse
    jaguarhouse está desconectado Master
    Fecha de Ingreso
    ene 2009
    Ubicación
    Guadalajara, jalisco
    Mensajes
    116

    Predeterminado

    Hola Kalo

    Tienes que conseguirte el SDK de canon, ahi estan las librerias para abrir los .cr2

    Se llama Digicam

    Primero tienes que registrarte y despues de unos dias te aprueban

    Download Library - Canon USA Consumer Products

    No estoy seguro pero creo que unicamente trae librerias para .NET

    Solo como curiosidad, que tipo de proyecto estas haciendo?

    Saludos
    Canon 450d (Xsi Kit) + Canon 18-55mm f4.5/5.6 + Canon 70-300mm f4.5/5.6 = Muxa diversion jejeje

  5. #5
    Avatar de Kalo
    Kalo está desconectado Primer Dan
    Fecha de Ingreso
    sep 2007
    Ubicación
    Museros (Valencia)[País Valencià][Espanya][Europa], etc.etc.
    Mensajes
    1.241

    Predeterminado

    No es ningun proyecto, simplemente es un programita hecho con VB en el cual tiene una base de datos que tiene, n.foto, ruta, extension, 10 campos para nombres de las personas que hay en la foto o video, lugar, acontecimento, etc, y puede filtrar, hacer pases, etc. pero no consigo leer directamente el raw .....

    Ok por la información ....
    Casi "to" en venta.

  6. #6
    Avatar de Vampyressa
    Vampyressa está desconectado Tercer Dan
    Fecha de Ingreso
    ene 2008
    Ubicación
    El Mundo
    Mensajes
    6.151

    Predeterminado

    Yo lo intente una vez y fue realmente complicado lo deje

  7. #7
    Avatar de miguelpg
    miguelpg está desconectado Participante
    Fecha de Ingreso
    jul 2009
    Ubicación
    Santander
    Mensajes
    36

    Predeterminado

    Hola. No sé conocerás este foro de Visual Basic, pero creo que es uno de los mejores que hay hoy por hoy (en muchas cosas nos patrocina Microsoft).
    Mi especialidad no es multimedia (yo programo gestión), pero hay gente muy buena y seguro que alguien te podrá aportar algo interesante.
    Esta es la dirección:

    VB-MUNDO Visual Basic, Visual Basic.NET, VB.NET, foro programacion, Tutoriales

    Saludos.

  8. #8
    Avatar de Jumper
    Jumper está desconectado Usus est magister optimus
    Fecha de Ingreso
    ene 2008
    Ubicación
    Madrid
    Mensajes
    377

    Predeterminado

    "dcraw -e" extrae el jpeg incrustado que tiene cada raw, puedes extraer todas las miniaturas de jpeg de cada raw y luego tu programa las leerá sin problemas como un jpeg más. Necesitas utilizar un programa externo como dcraw para ello, pero trabaja integramente en linea de comandos y como ves la solución sería muy sencilla.

  9. #9
    Avatar de Guillermo Luijk
    Guillermo Luijk está desconectado Primer Dan
    Fecha de Ingreso
    nov 2006
    Ubicación
    Madrid (a ratos Alicante)
    Mensajes
    1.928

    Predeterminado

    Cita Iniciado por Jumper Ver Mensaje
    "dcraw -e" extrae el jpeg incrustado que tiene cada raw, puedes extraer todas las miniaturas de jpeg de cada raw y luego tu programa las leerá sin problemas como un jpeg más. Necesitas utilizar un programa externo como dcraw para ello, pero trabaja integramente en linea de comandos y como ves la solución sería muy sencilla.
    Puedes llamar a DCRAW desde VB muy fácilmente:

    Código:
    Option Explicit
    Option Base 1
    
    ' Declaración de tipos necesarios para el control de procesos
    Private Type PROCESS_INFORMATION
        hProcess As Long
        hThread As Long
        dwProcessId As Long
        dwThreadId As Long
    End Type
     
    Private Type STARTUPINFO
        cb As Long
        lpReserved As String
        lpDesktop As String
        lpTitle As String
        dwX As Long
        dwY As Long
        dwXSize As Long
        dwYSize As Long
        dwXCountChars As Long
        dwYCountChars As Long
        dwFillAttribute As Long
        dwFlags As Long
        wShowWindow As Integer
        cbReserved2 As Integer
        lpReserved2 As Long
        hStdInput As Long
        hStdOutput As Long
        hStdError As Long
    End Type
    
    ' Esta función sirve para lanzar dcraw.exe (equivale a Shell)
    ' http://msdn2.microsoft.com/en-us/library/ms682425(VS.85).aspx
    Private Declare Function CreateProcess Lib "kernel32" _
        Alias "CreateProcessA" _
        (ByVal lpApplicationName As String, _
        ByVal lpCommandLine As String, _
        lpProcessAttributes As Any, _
        lpThreadAttributes As Any, _
        ByVal bInheritHandles As Long, _
        ByVal dwCreationFlags As Long, _
        lpEnvironment As Any, _
        ByVal lpCurrentDirectory As String, _
        lpStartupInfo As STARTUPINFO, _
        lpProcessInformation As PROCESS_INFORMATION) As Long
    
    ' Obtenemos handler al ejecutable lanzado identificado por hObject (ID de proceso)
    Private Declare Function OpenProcess Lib "kernel32.dll" _
        (ByVal dwAccess As Long, _
        ByVal fInherit As Integer, _
        ByVal hObject As Long) As Long
    
    ' Supongo que fuerza la finalización del proceso (no la usamos)
    Private Declare Function TerminateProcess Lib "kernel32" _
        (ByVal hProcess As Long, _
        ByVal uExitCode As Long) As Long
    
    ' Cierra los procesos
    Private Declare Function CloseHandle Lib "kernel32" _
        (ByVal hObject As Long) As Long
    
    ' Testea si el proceso hProcess sigue en ejecución
    Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
    
    ' Pausa en milisegundos (podría sustituir a un Timer)
    Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
          
    'Const SYNCHRONIZE = 1048576
    Const NORMAL_PRIORITY_CLASS = &H20&
     
    ' Función de revelado
    Function LlamadaDCRAW()
        Const STANDARD_RIGHTS_REQUIRED = &HF0000
        Const PROCESS_QUERY_INFORMATION = &H400
        
        Dim pInfo As PROCESS_INFORMATION
        Dim sInfo As STARTUPINFO
        Dim sNull As String
        Dim lSuccess As Long
        Dim lRetValue As Long
     
        Dim hproc As Long
     
        Dim ok As Long
        Dim exitCode As Long
        Const STILL_ACTIVE = &H103  ' En decimal 259
     
        'http://support.microsoft.com/kb/129797
        sInfo.cb = Len(sInfo)
     
        ' Lanzamos DCRAW obteniendo en pInfo la información del proceso creado (pInfo.dwProcessId)
        ' http://msdn2.microsoft.com/en-us/library/ms682425(VS.85).aspx
        lSuccess = CreateProcess(sNull, _
            "c:\dcraw.exe -v -T -4 c:\r\1.cr2 c:\r\2.cr2 c:\r\3.cr2", _
            ByVal 0&, _
            ByVal 0&, _
            1&, _
            NORMAL_PRIORITY_CLASS, _
            ByVal 0&, _
            sNull, _
            sInfo, _
            pInfo)
        ' Pendiente: qué hacer si lSuccess es = 0
        
        ' Obtenemos handler al ejecutable lanzado identificado por pInfo.dwProcessId
        hproc = OpenProcess(STANDARD_RIGHTS_REQUIRED Or PROCESS_QUERY_INFORMATION, False, pInfo.dwProcessId)
        
        ' Detectamos finalización del proceso con exitCode<>259
        While (hproc)
            ok = GetExitCodeProcess(hproc, exitCode)
            'http://vbnet.mvps.org/index.html?code/faq/getexitcprocess.htm
            If exitCode <> STILL_ACTIVE Then GoTo Salir
                
            'http://www.developerfusion.co.uk/show/119/
            Sleep (100)
        Wend
        
    Salir:
     
        lRetValue = CloseHandle(pInfo.hThread)
        lRetValue = CloseHandle(pInfo.hProcess)
     
    End Function
    Yo lo hago más a lo bruto, con el Shell, pero quiero migrarlo un día a la otra forma:

    Código:
    Shell "c:\dcraw.exe -e foto.cr2", vbHide
    pero es mejor el código que te he puesto antes porque detecta cuando el proceso DCRAW ha terminado. Aunque si solo vas a extraer el JPEG, como eso no tarda nada puedes hacer esta llamada que es muy simple, esperar un par de segundos, y luego leer el archivo foto.thumb.jpg en la misma ruta del CR2.

    Salu2
    Última edición por Guillermo Luijk; 19/08/09 a las 17:05:48

  10. #10
    Avatar de Kalo
    Kalo está desconectado Primer Dan
    Fecha de Ingreso
    sep 2007
    Ubicación
    Museros (Valencia)[País Valencià][Espanya][Europa], etc.etc.
    Mensajes
    1.241

    Predeterminado

    Gracias, por responder, ya me habia olvidado de este hilo .... pero lo que quiero es leer directamente el RAW para no tenerdo 2 ficheros duplicado, es decir, uno con RAW y otro jpg o tiff o cualquier otro formato ....

    Gracias de nuevo.
    Casi "to" en venta.

Temas Similares

  1. ***Vendido*** canon 5d mas accesorios FOTOS """REBAJADO A 1130"""
    Por CAMILO en foro Finalizadas
    Respuestas: 9
    Último mensaje: 28/02/09, 16:07:04
  2. "Formato Medio" VS "APS-C" VS "Cuadro Completo" ¿calidad profesional?
    Por ProfetaAgape en foro General-Fotografía
    Respuestas: 10
    Último mensaje: 07/05/08, 20:10:15
  3. Respuestas: 120
    Último mensaje: 27/11/07, 15:56:18

Tags for this Thread

Marcadores

Normas de Publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •