<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <meta http-equiv="Content-Type" value="application/xhtml+xml" />
  <meta name="verify-v1" content="g222frIIxcQTrvDR3NBRUSKP3AnMNoqxOkIniCEkV7U=" />
  <link rel="meta" type="application/rdf+xml" title="ICI" href="http://imagemagick.org/ici.rdf" />
  <style type="text/css" media="screen,projection"><!--
    @import url("../../www/magick.css");
  --></style>
  <link rel="shortcut icon" href="../../images/wand.ico"  type="images/vnd.microsoft.icon"/>
  <title>ImageMagick: MagickCore, C API for ImageMagick: Read or Write Binary Large OBjects</title>
  <meta http-equiv="Content-Language" content="en-US"/>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  <meta http-equiv="Reply-to" content="magick-users@imagemagick.org"/>
  <meta name="Generator" content="PHP"/>
  <meta name="Keywords" content="magickcore, c, api, for, imagemagick:, read, or, write, binary, large, objects, ImageMagick, ImageMagic, MagickCore, MagickWand, PerlMagick, Magick++, RMagick, PythonMagick, JMagick, TclMagick, Image, Magick, Magic, Wand, ImageMagickObject, Swiss, Army, Knife, Image, Processing"/>
  <meta name="Description" content="ImageMagick® is a software suite to create, edit, and compose bitmap images. It can read, convert and write images in a variety of formats (about 100) including GIF, JPEG, JPEG-2000, PNG, PDF, PhotoCD, TIFF, and DPX. Use ImageMagick to translate, flip, mirror, rotate, scale, shear and transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and Bézier curves.  ImageMagick is free software delivered as a ready-to-run binary distribution or as source code that you can freely use, copy, modify, and distribute. Its license is compatible with the GPL. It runs on all major operating systems.  The functionality of ImageMagick is typically utilized from the command line or you can use the features from programs written in your favorite programming language. Choose from these interfaces: MagickCore (C), MagickWand (C), ChMagick (Ch), Magick++ (C++), JMagick (Java), L-Magick (Lisp), PascalMagick (Pascal), PerlMagick (Perl), MagickWand for PHP (PHP), PythonMagick (Python), RMagick (Ruby), or TclMagick (Tcl/TK). With a language interface, use ImageMagick to modify or create images automagically and dynamically."/>
  <meta name="Rating" content="GENERAL"/>
  <meta name="Robots" content="INDEX, FOLLOW"/>
  <meta name="Generator" content="ImageMagick Studio LLC"/>
  <meta name="Author" content="ImageMagick Studio LLC"/>
  <meta name="Revisit-after" content="2 DAYS"/>
  <meta name="Resource-type" content="document"/>
  <meta name="Copyright" content="Copyright (c) 1999-2010 ImageMagick Studio LLC"/>
  <meta name="Distribution" content="Global"/>
</head>

<body id="www-imagemagick-org">
<div class="titlebar">
<a href="../../index.html">
  <img src="../../images/script.png" alt="[ImageMagick]"
  style="width: 350px; height: 60px; margin: 28px auto; float: left;" /></a>
<a href="http://www.networkredux.com">
  <img src="../../images/networkredux.png" alt="[sponsor]"
  style="margin: 45px auto; border: 0px; float: left;" /></a>
<a href="http://www.imagemagick.org/discourse-server/">
  <img src="../../images/logo.jpg" alt=""
  style="width: 114px; height: 118px; border: 0px; float: right;" /></a>
<a href="../../index.html">
  <img src="../../images/sprite.jpg" alt=""
  style="width: 114px; height: 118px; border: 0px; float: right;" /></a>
</div>

<div class="eastbar">

<div class="menu">
  <a href="../../index.html">About ImageMagick</a>
</div>
<div class="sep"></div>
<div class="menu">
  <a href="../../www/command-line-tools.html">Command-line Tools</a>
</div>
<div class="sub">
    <a href="../../www/command-line-processing.html">Processing</a>
</div>
<div class="sub">
    <a href="../../www/command-line-options.html">Options</a>
</div>
<div class="sub">
    <a href="http://www.imagemagick.org/Usage/">Usage</a>
</div>
<div class="menu">
  <a href="../../www/api.html">Program Interfaces</a>
</div>
<div class="sub">
    <a href="../../www/magick-wand.html">MagickWand</a>
</div>
<div class="sub">
    <a href="../../www/magick-core.html">MagickCore</a>
</div>
<div class="sub">
    <a href="../../www/perl-magick.html">PerlMagick</a>
</div>
<div class="sub">
    <a href="../../Magick++/">Magick++</a>
</div>
<div class="menu">
  <a href="../../www/architecture.html">Architecture</a>
</div>
<div class="sep"></div>
<div  class="menu">
   <a href="../../www/install-source.html">Install from Source</a>
</div>
<div class="sub">
    <a href="../../www/install-source.html#unix">Unix</a>
</div>
<div class="sub">
    <a href="../../www/install-source.html#windows">Windows</a>
 </div>
<div class="menu">
  <a href="../../www/binary-releases.html">Binary Releases</a>
</div>
<div class="sub">
    <a href="../../www/binary-releases.html#unix">Unix</a>
</div>
<div class="sub">
    <a href="../../www/binary-releases.html#macosx">Mac OS X</a>
</div>
<div class="sub">
    <a href="../../www/binary-releases.html#windows">Windows</a>
</div>
<div class="menu">
  <a href="../../www/resources.html">Resources</a>
</div>
<div class="sep"></div>
<div class="menu">
  <a href="../../www/download.html">Download</a>
</div>
<div class="sep"></div>
<div class="menu">
  <a href="../http://www.imagemagick.org/script/search.php">Search</a>
</div>
<div class="sep"></div>
<div class="menu">
  <a href="../../www/sitemap.html">Site Map</a>
</div>
<div  class="sub">
    <a href="../../www/links.html">Links</a>
</div>
<div class="sep"></div>
<div  class="menu">
  <a href="../../www/sponsors.html">Sponsors:</a>

<div class="sponsbox">
<div  class="sponsor">
   <a href="http://www.abi-stoff.de/abizeitung/" title="Abibuch">Abizeitung</a><!-- 20101101000200 -->
</div>
<div  class="sponsor">
  <a href="http://www.tomsgutscheine.de">Tom's Gutscheine</a><!-- 201005010360 invendio.de-->
</div>
<div  class="sponsor">
  <a href="http://www.online-kredit-index.de">Kredit</a><!-- 201007010120 Buchhorn -->
</div>
<div  class="sponsor">
  <a href="http://www.blumenversender.com">Blumenversand</a><!-- 201005010120 -->
</div>
<div  class="sponsor">
  <a href="http://www.print24.de/">Druckerei</a><!-- 201009010720 -->
</div>
<div  class="sponsor">
   <a href="http://www.goyax.de">Börse</a><!-- 201004010240 Gewiese digital-finance.de -->
</div>
<div  class="sponsor">
   <a href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
<div  class="sponsor">
  <a href="http://www.who-sells-it.com/">Free Catalogs</a><!-- 201002010000 -->
</div>
</div>
</div>


</div>

<div class="main">

<p class="navigation-index">[<a href="#BlobToImage">BlobToImage</a> &bull; <a href="#FileToImage">FileToImage</a> &bull; <a href="#GetBlobProperties">GetBlobProperties</a> &bull; <a href="#ImageToBlob">ImageToBlob</a> &bull; <a href="#ImageToFile">ImageToFile</a> &bull; <a href="#ImagesToBlob">ImagesToBlob</a> &bull; <a href="#InjectImageBlob">InjectImageBlob</a>]</p>

<h2><a href="http://www.imagemagick.org/api/MagickCore/blob
_8c.html" target="source" name="BlobToImage">BlobToImage</a></h2>
<div class="doc-section">

<p>BlobToImage() implements direct to memory image formats.  It returns the blob as an image.</p></ol>

<p>The format of the BlobToImage method is:</p>

<pre class="code">
  Image *BlobToImage(const ImageInfo *image_info,const void *blob,
    const size_t length,ExceptionInfo *exception)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>image_info</h5>
<ol><p>the image info.</p></ol>

<h5>blob</h5>
<ol><p>the address of a character stream in one of the image formats understood by ImageMagick.</p></ol>

<h5>length</h5>
<ol><p>This size_t integer reflects the length in bytes of the blob.</p></ol>

<h5>exception</h5>
<ol><p>return any errors or warnings in this structure.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickCore/blob
_8c.html" target="source" name="FileToImage">FileToImage</a></h2>
<div class="doc-section">

<p>FileToImage() write the contents of a file to an image.</p></ol>

<p>The format of the FileToImage method is:</p>

<pre class="code">
  MagickBooleanType FileToImage(Image *,const char *filename)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>image</h5>
<ol><p>the image.</p></ol>

<h5>filename</h5>
<ol><p>the filename.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickCore/blob
_8c.html" target="source" name="GetBlobProperties">GetBlobProperties</a></h2>
<div class="doc-section">

<p>GetBlobProperties() returns information about an image blob.</p></ol>

<p>The format of the GetBlobProperties method is:</p>

<pre class="code">
  const struct stat *GetBlobProperties(const Image *image)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>image</h5>
<ol><p>the image.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickCore/blob
_8c.html" target="source" name="ImageToBlob">ImageToBlob</a></h2>
<div class="doc-section">

<p>ImageToBlob() implements direct to memory image formats.  It returns the image as a blob and its length.  The magick member of the ImageInfo structure determines the format of the returned blob (GIF, JPEG,  PNG, etc.)</p></ol>

<p>The format of the ImageToBlob method is:</p>

<pre class="code">
  unsigned char *ImageToBlob(const ImageInfo *image_info,Image *image,
    size_t *length,ExceptionInfo *exception)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>image_info</h5>
<ol><p>the image info.</p></ol>

<h5>image</h5>
<ol><p>the image.</p></ol>

<h5>length</h5>
<ol><p>This pointer to a size_t integer sets the initial length of the blob.  On return, it reflects the actual length of the blob.</p></ol>

<h5>exception</h5>
<ol><p>return any errors or warnings in this structure.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickCore/blob
_8c.html" target="source" name="ImageToFile">ImageToFile</a></h2>
<div class="doc-section">

<p>ImageToFile() writes an image to a file.  It returns MagickFalse if an error occurs otherwise MagickTrue.</p></ol>

<p>The format of the ImageToFile method is:</p>

<pre class="code">
   MagickBooleanType ImageToFile(Image *image,char *filename,
     ExceptionInfo *exception)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>image</h5>
<ol><p>the image.</p></ol>

<h5>filename</h5>
<ol><p>Write the image to this file.</p></ol>

<h5>exception</h5>
<ol><p>return any errors or warnings in this structure.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickCore/blob
_8c.html" target="source" name="ImagesToBlob">ImagesToBlob</a></h2>
<div class="doc-section">

<p>ImagesToBlob() implements direct to memory image formats.  It returns the image sequence as a blob and its length.  The magick member of the ImageInfo structure determines the format of the returned blob (GIF, JPEG,  PNG, etc.)</p></ol>

<p>Note, some image formats do not permit multiple images to the same image stream (e.g. JPEG).  in this instance, just the first image of the sequence is returned as a blob.</p></ol>

<p>The format of the ImagesToBlob method is:</p>

<pre class="code">
  unsigned char *ImagesToBlob(const ImageInfo *image_info,Image *images,
    size_t *length,ExceptionInfo *exception)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>image_info</h5>
<ol><p>the image info.</p></ol>

<h5>images</h5>
<ol><p>the image list.</p></ol>

<h5>length</h5>
<ol><p>This pointer to a size_t integer sets the initial length of the blob.  On return, it reflects the actual length of the blob.</p></ol>

<h5>exception</h5>
<ol><p>return any errors or warnings in this structure.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickCore/blob
_8c.html" target="source" name="InjectImageBlob">InjectImageBlob</a></h2>
<div class="doc-section">

<p>InjectImageBlob() injects the image with a copy of itself in the specified format (e.g. inject JPEG into a PDF image).</p></ol>

<p>The format of the InjectImageBlob method is:</p>

<pre class="code">
  MagickBooleanType InjectImageBlob(const ImageInfo *image_info,
    Image *image,Image *inject_image,const char *format,
    ExceptionInfo *exception)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>image_info</h5>
<ol><p>the image info..</p></ol>

<h5>image</h5>
<ol><p>the image.</p></ol>

<h5>inject_image</h5>
<ol><p>inject into the image stream.</p></ol>

<h5>format</h5>
<ol><p>the image format.</p></ol>

<h5>exception</h5>
<ol><p>return any errors or warnings in this structure.</p></ol>

 </div>

</div>

<div id="linkbar">
 <!--    <span id="linkbar-west">&nbsp;</span>  -->
    <span id="linkbar-center">
      <a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> &bull;
    <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>
    </span>
    <span id="linkbar-east">&nbsp;</span>
  </div>
  <div class="footer">
    <span id="footer-west">&copy; 1999-2010 ImageMagick Studio LLC</span>
    <span id="footer-east"> <a href="../http://www.imagemagick.org/script/contact.php">Contact the Wizards</a></span>
  </div>
  <div style="clear: both; margin: 0; width: 100%; "></div>
</body>
</html>
