Sophie

Sophie

distrib > Fedora > 14 > x86_64 > media > updates > by-pkgid > 4f1594edf46b1cade0946ff9ff078094 > files > 26

LibRaw-devel-0.9.1-9.fc14.x86_64.rpm

<!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>