<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Overview of LibRaw API (C++)</title> </head> <meta http-equiv="content-type" content="text/html; charset=windows-1251"> <body> <a href=index-eng.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-eng.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-eng.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(); // And let us print its dump; the data are accessible through <a href="API-datastruct-eng.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-eng.html>[back to Index]</a> <hr> <address><a href="mailto:info@libraw.org">LibRaw Team</a></address> <!-- Created: Sun Mar 16 09:15:41 MSK 2008 --> <!-- hhmts start --> Last modified: Mon May 4 22:11:54 MSD 2009 <!-- hhmts end --> </body> </html>