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 | + | 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. | + | 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 = "<FONT Color=gray>''/percorso/del/file.raf''</font>" | |
− | + | filePPM = "<FONT Color=gray>''/percorso/del/nuovo/file.ppm''</font>" | |
− | + | 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) & " !") | ||
<FONT Color=gray>' ''Va in chiusura:''</font> | <FONT Color=gray>' ''Va in chiusura:''</font> | ||
− | + | st.Close | |
− | + | 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