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...') |
(Nessuna differenza)
|
Versione delle 11:35, 20 dic 2014
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"
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" ' 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 IsNull(libraw_data) 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