| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
| <html> |
| <head> |
| <title>Overview of LibRaw API (C++)</title> |
| </head> |
| |
| <body> |
| <a href=index.html>[back to Index]</a> |
| <h1>Overview of LibRaw API (C++)</h1> |
| <h2>General Remarks</h2> |
| <ol> |
| <li>The entire processing is carried out by an instance of the LibRaw class, which is an image processor.</li> |
| <li>One image processor can simultaneously process only one data source file, but consecutive processing of any number of files |
| is possible.</li> |
| <li>There may be several simultaneously working image processors in a software program (e.g., in different threads), although one |
| should remember that each image processor may require much memory.</li> |
| <li>Reading of source data from the RAW file requires virtually no customization (see <a |
| href="API-notes.html">API Notes</a> for exceptions to this rule).</li> |
| <li>All data extracted from the RAW file are accessible through data fields of the image processor (LibRaw class instance).</li> |
| <li>Although LibRaw <b>is not intended for RAW data postprocessing</b>, the library includes calls that enable complete |
| emulation of the <b>dcraw</b> utility. |
| <li>All customization for the processing is performed via data fields of the LibRaw class.</li> |
| </ol> |
| |
| <h2>Brief Demonstration</h2> |
| <p> |
| The example below contains no error processing for the sake of brevity. |
| </p> |
| <pre> |
| #include "libraw/libraw.h" |
| int process_image(char *file) |
| { |
| // Let us create an image processor |
| LibRaw iProcessor; |
| |
| // Open the file and read the metadata |
| iProcessor.open_file(file); |
| |
| // The metadata are accessible through <a href="API-datastruct.html">data fields of the class</a> |
| printf("Image size: %d x %d\n",iProcessor.imgdata.sizes.width,iProcessor.imgdata.sizes.height); |
| |
| // Let us unpack the image |
| iProcessor.unpack(); |
| |
| // Convert from imgdata.rawdata to imgdata.image: |
| iProcessor.raw2image(); |
| |
| // And let us print its dump; the data are accessible through <a href="API-datastruct.html">data fields of the class</a> |
| for(i = 0;i lt; iProcessor.imgdata.sizes.iwidth * iProcessor.imgdata.sizes.iheight; i++) |
| printf("i=%d R=%d G=%d B=%d G2=%d\n", |
| i, |
| iProcessor.imgdata.image[i][0], |
| iProcessor.imgdata.image[i][1], |
| iProcessor.imgdata.image[i][2], |
| iProcessor.imgdata.image[i][3] |
| ); |
| |
| // Finally, let us free the image processor for work with the next image |
| iProcessor.recycle(); |
| } |
| </pre> |
| |
| |
| <a href=index.html>[back to Index]</a> |
| </body> |
| </html> |