Differenze tra le versioni di "Convertire immagini RAW di fotocamere digitali mediante le funzioni esterne del API di Libraw"

Da Gambas-it.org - Wikipedia.
(Creata pagina con ''''Libraw''' è una libreria per la lettura dei file ''RAW'' ottenuti da fotocamere digitali fotografiche (CRW/CR2, NEF, RAF, DNG, MOS, KDC, DCR ed altri). Per poter utilizz...')
 
Riga 1: Riga 1:
 
'''Libraw''' è una libreria per la lettura dei file ''RAW'' ottenuti da fotocamere digitali fotografiche (CRW/CR2, NEF, RAF, DNG, MOS, KDC, DCR ed altri).  
 
'''Libraw''' è una libreria per la lettura dei file ''RAW'' ottenuti da fotocamere digitali fotografiche (CRW/CR2, NEF, RAF, DNG, MOS, KDC, DCR ed altri).  
  
Per poter utilizzare in Gambas le risorse di questa libreria, bisognerà installare e richiamare la libreria cdinamica condivisa: "''libraw_r.so.9.0.0''"
+
Per poter utilizzare in Gambas le risorse di questa libreria, bisognerà installare e richiamare la libreria condivisa: "''libraw_r.so.9.0.2'' "
 
 
  
 
Mostriamo di seguito un semplice esempio di come convertire un file immagine di tipo ''RAF'' in un file immagine di tipo ''PPM'':
 
Mostriamo di seguito un semplice esempio di come convertire un file immagine di tipo ''RAF'' in un file immagine di tipo ''PPM'':
  Library "libraw_r:9.0.0"
+
  Library "libraw_r:9.0.2"
 
   
 
   
 
  <FONT Color=gray>' ''libraw_data_t * libraw_init(unsigned int flags)''</font>
 
  <FONT Color=gray>' ''libraw_data_t * libraw_init(unsigned int flags)''</font>
Riga 36: Riga 35:
 
   Dim err As Integer
 
   Dim err As Integer
 
   
 
   
  fileRAW = "''/percorso/del/file.raf''"
+
  fileRAW = "<FONT Color=gray>''/percorso/del/file.raf''</font>"
  filePPM = "''/percorso/del/nuovo/file.ppm''"
+
  filePPM = "<FONT Color=gray>''/percorso/del/nuovo/file.ppm''</font>"
 
    
 
    
  libraw_data = libraw_init(0)
+
  libraw_data = libraw_init(0)
  If IsNull(libraw_data) Then Error.Raise("Impossibile inizializzare la libreria 'libraw' !")
+
  If libraw_data == 0 Then Error.Raise("Impossibile inizializzare la libreria 'libraw' !")
 
    
 
    
  st = Memory libraw_data For Read Write
+
  st = Memory libraw_data For Read Write
  Seek #st, 476
+
  Seek #st, 476
  Write #st, 1 As Integer
+
  Write #st, 1 As Integer
 
          
 
          
  err = libraw_open_file(libraw_data, fileRAW)
+
  err = libraw_open_file(libraw_data, fileRAW)
  If err Then Error.Raise("Errore: " & libraw_strerror(err) & " !")
+
  If err Then Error.Raise("Errore: " & libraw_strerror(err) & " !")
 
   
 
   
  Seek #st, 176
+
  Seek #st, 176
  Read #st, make
+
  Read #st, make
  Seek #st, Seek(st) + 2
+
  Seek #st, Seek(st) + 2
  Read #st, model
+
  Read #st, model
  Print "Processo di: ", Null, fileRAW; "  ("; make; " - "; model; ")"
+
  Print "Processo di: ", Null, fileRAW; "  ("; make; " - "; model; ")"
 
    
 
    
  err = libraw_unpack(libraw_data)
+
  err = libraw_unpack(libraw_data)
  If err Then Error.Raise("Errore: " & libraw_strerror(err) & " !")
+
  If err Then Error.Raise("Errore: " & libraw_strerror(err) & " !")
 
    
 
    
  err = libraw_dcraw_process(libraw_data)
+
  err = libraw_dcraw_process(libraw_data)
  If err Then Error.Raise("Errore: " & libraw_strerror(err) & " !")
+
  If err Then Error.Raise("Errore: " & libraw_strerror(err) & " !")
 
    
 
    
  Print "Scrittura del file: ", Null; filePPM
+
  Print "Scrittura del file: ", Null; filePPM
 
  err = libraw_dcraw_ppm_tiff_writer(libraw_data, filePPM)
 
  If err Then Error.Raise("Errore: " & libraw_strerror(err) & " !")
 
 
   
 
   
 +
  err = libraw_dcraw_ppm_tiff_writer(libraw_data, filePPM)
 +
  If err Then Error.Raise("Errore: " & libraw_strerror(err) & " !")
 
   
 
   
 
  <FONT Color=gray>' ''Va in chiusura:''</font>
 
  <FONT Color=gray>' ''Va in chiusura:''</font>
  st.Close
+
  st.Close
  libraw_close(libraw_data)
+
  libraw_close(libraw_data)
 
   
 
   
 
  '''End'''
 
  '''End'''
 
  
  

Versione delle 18:52, 1 dic 2021

Libraw è una libreria per la lettura dei file RAW ottenuti da fotocamere digitali fotografiche (CRW/CR2, NEF, RAF, DNG, MOS, KDC, DCR ed altri).

Per poter utilizzare in Gambas le risorse di questa libreria, bisognerà installare e richiamare la libreria condivisa: "libraw_r.so.9.0.2 "

Mostriamo di seguito un semplice esempio di come convertire un file immagine di tipo RAF in un file immagine di tipo PPM:

Library "libraw_r:9.0.2"

' libraw_data_t * libraw_init(unsigned int flags)
Private Extern libraw_init(flags As Integer) As Pointer

' int libraw_open_file(libraw_data_t*, const char *)
Private Extern libraw_open_file(libraw_data_t As Pointer, fileRawIn As String) As Integer

' int libraw_unpack(libraw_data_t*)
Private Extern libraw_unpack(libraw_data_t As Pointer) As Integer

' int libraw_dcraw_process(libraw_data_t* lr)
Private Extern libraw_dcraw_process(libraw_data_t As Pointer) As Integer

' int libraw_dcraw_ppm_tiff_writer(libraw_data_t* lr,const char *filename)
Private Extern libraw_dcraw_ppm_tiff_writer(libraw_data_t As Pointer, filename As String) As Integer

' const char *libraw_strerror(int errorcode)
Private Extern libraw_strerror(errocode As Integer) As String

' void libraw_close(libraw_data_t*)
Private Extern libraw_close(libraw_data_t As Pointer)
 

Public Sub Main()

 Dim libraw_data As Pointer
 Dim st As Stream
 Dim fileRAW, filePPM, make, model As String
 Dim err As Integer

 fileRAW = "/percorso/del/file.raf"
 filePPM = "/percorso/del/nuovo/file.ppm"
 
 libraw_data = libraw_init(0)
 If libraw_data == 0 Then Error.Raise("Impossibile inizializzare la libreria 'libraw' !")
 
 st = Memory libraw_data For Read Write
 Seek #st, 476
 Write #st, 1 As Integer
        
 err = libraw_open_file(libraw_data, fileRAW)
 If err Then Error.Raise("Errore: " & libraw_strerror(err) & " !")

 Seek #st, 176
 Read #st, make
 Seek #st, Seek(st) + 2
 Read #st, model
 Print "Processo di: ", Null, fileRAW; "  ("; make; " - "; model; ")"
  
 err = libraw_unpack(libraw_data)
 If err Then Error.Raise("Errore: " & libraw_strerror(err) & " !")
  
 err = libraw_dcraw_process(libraw_data)
 If err Then Error.Raise("Errore: " & libraw_strerror(err) & " !")
  
 Print "Scrittura del file: ", Null; filePPM

 err = libraw_dcraw_ppm_tiff_writer(libraw_data, filePPM)
 If err Then Error.Raise("Errore: " & libraw_strerror(err) & " !")

' Va in chiusura:
 st.Close
 libraw_close(libraw_data)

End


Riferimenti