blob: d77c8f2a0d315c1b55544338503dbe81fa1fc2d1 [file] [log] [blame]
cristydcca3fa2010-12-29 21:50:07 +00001<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
2 "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
cristy2bd2a982011-02-15 00:52:58 +00003<html version="-//W3C//DTD XHTML 1.1//EN"
4 xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
5 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
6 xsi:schemaLocation="http://www.w3.org/1999/xhtml
7 http://www.w3.org/MarkUp/SCHEMA/xhtml11.xsd">
cristy3eaa0ef2010-03-06 20:35:26 +00008<head>
cristy3c98a4f2010-08-13 20:09:41 +00009 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
10 <meta name="verify-v1" content="g222frIIxcQTrvDR3NBRUSKP3AnMNoqxOkIniCEkV7U="/>
cristyffb69ed2010-12-25 00:06:48 +000011 <title>ImageMagick: MagickCore, C API for ImageMagick: Image Distortions</title>
cristy3ed852e2009-09-05 21:47:34 +000012 <meta http-equiv="Content-Language" content="en-US"/>
13 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
14 <meta http-equiv="Reply-to" content="magick-users@imagemagick.org"/>
cristy3c98a4f2010-08-13 20:09:41 +000015 <meta name="Application-name" content="ImageMagick"/>
cristyaf8d6652011-02-04 21:57:45 +000016 <meta name="Description" content="Use ImageMagick to convert, edit, or compose bitmap images in a variety of formats. In addition resize, rotate, shear, distort and transform images."/>
cristy3c98a4f2010-08-13 20:09:41 +000017 <meta name="Application-url" content="http://www.imagemagick.org"/>
cristy3ed852e2009-09-05 21:47:34 +000018 <meta name="Generator" content="PHP"/>
19 <meta name="Keywords" content="magickcore, c, api, for, imagemagick:, image, distortions, ImageMagick, ImageMagic, MagickCore, MagickWand, PerlMagick, Magick++, RMagick, PythonMagick, JMagick, TclMagick, Image, Magick, Magic, Wand, ImageMagickObject, Swiss, Army, Knife, Image, Processing"/>
cristy3ed852e2009-09-05 21:47:34 +000020 <meta name="Rating" content="GENERAL"/>
21 <meta name="Robots" content="INDEX, FOLLOW"/>
22 <meta name="Generator" content="ImageMagick Studio LLC"/>
23 <meta name="Author" content="ImageMagick Studio LLC"/>
24 <meta name="Revisit-after" content="2 DAYS"/>
25 <meta name="Resource-type" content="document"/>
cristy4103d562010-12-10 01:38:54 +000026 <meta name="Copyright" content="Copyright (c) 1999-2011 ImageMagick Studio LLC"/>
cristy3ed852e2009-09-05 21:47:34 +000027 <meta name="Distribution" content="Global"/>
cristydcca3fa2010-12-29 21:50:07 +000028 <link rel="icon" href="../../images/wand.png"/>
cristy3c98a4f2010-08-13 20:09:41 +000029 <link rel="shortcut icon" href="../../images/wand.ico" type="images/x-icon"/>
30 <link rel="meta" type="application/rdf+xml" title="ICI" href="http://imagemagick.org/ici.rdf"/>
cristy7a40ba82011-01-08 20:31:18 +000031 <link rel="stylesheet" href="http://www.google.com/cse/style/look/default.css" type="text/css" />
cristy3c98a4f2010-08-13 20:09:41 +000032 <style type="text/css" media="all">
33 @import url("../../www/magick.css");
34 </style>
cristydcca3fa2010-12-29 21:50:07 +000035 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
cristy361f4662010-12-31 23:02:52 +000036 <script type="text/javascript" src="../fancybox/jquery.fancybox-1.3.4.pack.js"></script>
37 <link rel="stylesheet" type="text/css" href="../fancybox/jquery.fancybox-1.3.4.css" media="screen" />
38 <script type="text/javascript">
39 $(document).ready(function() {
40 $("a[href$=.jpg],a[href$=.png],a[href$=.gif]").fancybox({
41 'transitionIn' : 'elastic',
42 'transitionOut' : 'elastic',
43 'overlayShow' : false,
44 'opacity' : true
45 });
46 });
47 </script>
cristy3eaa0ef2010-03-06 20:35:26 +000048</head>
49
50<body id="www-imagemagick-org">
51<div class="titlebar">
52<a href="../../index.html">
53 <img src="../../images/script.png" alt="[ImageMagick]"
54 style="width: 350px; height: 60px; margin: 28px auto; float: left;" /></a>
55<a href="http://www.networkredux.com">
56 <img src="../../images/networkredux.png" alt="[sponsor]"
cristy52923442011-01-15 22:54:31 +000057 style="margin-top: 42px; border: 0px; float: left;" /></a>
cristy3eaa0ef2010-03-06 20:35:26 +000058<a href="http://www.imagemagick.org/discourse-server/">
cristyaf8d6652011-02-04 21:57:45 +000059 <img src="../../images/logo.jpg"
60 alt="ImageMagick Logo"
cristy178edaf2011-01-23 03:42:39 +000061 style="width: 123px; height: 118px; border: 0px; float: right;" /></a>
cristy3eaa0ef2010-03-06 20:35:26 +000062<a href="../../index.html">
cristyaf8d6652011-02-04 21:57:45 +000063 <img src="../../images/sprite.jpg"
64 alt="ImageMagick Sprite"
cristy3eaa0ef2010-03-06 20:35:26 +000065 style="width: 114px; height: 118px; border: 0px; float: right;" /></a>
66</div>
67
cristyce69bb02010-07-27 19:49:46 +000068<div class="westbar">
cristy3eaa0ef2010-03-06 20:35:26 +000069
cristy3ed852e2009-09-05 21:47:34 +000070<div class="menu">
cristy83a272e2010-05-07 20:40:35 +000071 <a title="About ImageMagick" href="../../index.html">About ImageMagick</a>
cristy3ed852e2009-09-05 21:47:34 +000072</div>
cristy3eaa0ef2010-03-06 20:35:26 +000073<div class="sep"></div>
cristy3ed852e2009-09-05 21:47:34 +000074<div class="menu">
cristybb503372010-05-27 20:51:26 +000075 <a title="Binary Releases" href="../../www/binary-releases.html">Binary Releases</a>
76</div>
77<div class="sub">
78 <a title="Binary Release: Unix" href="../../www/binary-releases.html#unix">Unix</a>
79</div>
80<div class="sub">
81 <a title="Binary Release: MacOS X" href="../../www/binary-releases.html#macosx">Mac OS X</a>
82</div>
83<div class="sub">
cristyda16f162011-02-19 23:52:17 +000084 <a title="Binary Release: iPhone" href="../../www/binary-releases.html#iPhone">iPhone</a>
85</div>
86<div class="sub">
cristybb503372010-05-27 20:51:26 +000087 <a title="Binary Release: Windows" href="../../www/binary-releases.html#windows">Windows</a>
88</div>
89<div class="sep"></div>
90<div class="menu">
cristy83a272e2010-05-07 20:40:35 +000091 <a title="Command-line Tools" href="../../www/command-line-tools.html">Command-line Tools</a>
cristy3ed852e2009-09-05 21:47:34 +000092</div>
93<div class="sub">
cristy83a272e2010-05-07 20:40:35 +000094 <a title="Command-line Tools: Processing" href="../../www/command-line-processing.html">Processing</a>
cristy3ed852e2009-09-05 21:47:34 +000095</div>
96<div class="sub">
cristy83a272e2010-05-07 20:40:35 +000097 <a title="Command-line Tools: Options" href="../../www/command-line-options.html">Options</a>
cristy3ed852e2009-09-05 21:47:34 +000098</div>
99<div class="sub">
cristy83a272e2010-05-07 20:40:35 +0000100 <a title="Command-line Tools: Usage" href="http://www.imagemagick.org/Usage/">Usage</a>
cristy3ed852e2009-09-05 21:47:34 +0000101</div>
102<div class="menu">
cristy83a272e2010-05-07 20:40:35 +0000103 <a title="Program Interfaces" href="../../www/api.html">Program Interfaces</a>
cristy3ed852e2009-09-05 21:47:34 +0000104</div>
105<div class="sub">
cristy83a272e2010-05-07 20:40:35 +0000106 <a title="Program Interface: MagickWand" href="../../www/magick-wand.html">MagickWand</a>
cristy3ed852e2009-09-05 21:47:34 +0000107</div>
108<div class="sub">
cristy83a272e2010-05-07 20:40:35 +0000109 <a title="Program Interface: MagickCore" href="../../www/magick-core.html">MagickCore</a>
cristy3ed852e2009-09-05 21:47:34 +0000110</div>
111<div class="sub">
cristy83a272e2010-05-07 20:40:35 +0000112 <a title="Program Interface: PerlMagick" href="../../www/perl-magick.html">PerlMagick</a>
cristy3ed852e2009-09-05 21:47:34 +0000113</div>
114<div class="sub">
cristydcca3fa2010-12-29 21:50:07 +0000115 <a title="Program Interface: Magick++" href="../../www/magick++.html">Magick++</a>
cristy3ed852e2009-09-05 21:47:34 +0000116</div>
cristy3eaa0ef2010-03-06 20:35:26 +0000117<div class="sep"></div>
cristy3ed852e2009-09-05 21:47:34 +0000118<div class="menu">
cristy83a272e2010-05-07 20:40:35 +0000119 <a title="Install from Source" href="../../www/install-source.html">Install from Source</a>
cristy3ed852e2009-09-05 21:47:34 +0000120</div>
121<div class="sub">
cristy83a272e2010-05-07 20:40:35 +0000122 <a title="Install from Source: Unix" href="../../www/install-source.html#unix">Unix</a>
cristy3ed852e2009-09-05 21:47:34 +0000123</div>
124<div class="sub">
cristy83a272e2010-05-07 20:40:35 +0000125 <a title="Install from Source: Windows" href="../../www/install-source.html#windows">Windows</a>
cristy3ed852e2009-09-05 21:47:34 +0000126 </div>
127<div class="menu">
cristy83a272e2010-05-07 20:40:35 +0000128 <a title="Resources" href="../../www/resources.html">Resources</a>
cristy3ed852e2009-09-05 21:47:34 +0000129</div>
cristybb503372010-05-27 20:51:26 +0000130<div class="menu">
131 <a title="Architecture" href="../../www/architecture.html">Architecture</a>
132</div>
cristy3ed852e2009-09-05 21:47:34 +0000133<div class="menu">
cristy83a272e2010-05-07 20:40:35 +0000134 <a title="Download" href="../../www/download.html">Download</a>
cristy3ed852e2009-09-05 21:47:34 +0000135</div>
cristy3eaa0ef2010-03-06 20:35:26 +0000136<div class="sep"></div>
cristy3ed852e2009-09-05 21:47:34 +0000137<div class="menu">
cristy52923442011-01-15 22:54:31 +0000138 <a title="Search" href="../../www/search.html">Search</a>
cristy3ed852e2009-09-05 21:47:34 +0000139</div>
cristy3eaa0ef2010-03-06 20:35:26 +0000140<div class="sep"></div>
cristy3ed852e2009-09-05 21:47:34 +0000141<div class="menu">
cristyffb69ed2010-12-25 00:06:48 +0000142 <a title="Site Map" href="../../www/sitemap.html">Site Map</a>
cristy3ed852e2009-09-05 21:47:34 +0000143</div>
144<div class="sub">
cristyffb69ed2010-12-25 00:06:48 +0000145 <a title="Site Map: Links" href="../../www/links.html">Links</a>
cristy3ed852e2009-09-05 21:47:34 +0000146</div>
cristy3eaa0ef2010-03-06 20:35:26 +0000147<div class="sep"></div>
cristy3ed852e2009-09-05 21:47:34 +0000148<div class="menu">
cristy83a272e2010-05-07 20:40:35 +0000149 <a title="Sponsors" href="../../www/sponsors.html">Sponsors:</a>
cristy3ed852e2009-09-05 21:47:34 +0000150
151<div class="sponsbox">
cristy178edaf2011-01-23 03:42:39 +0000152<div class="sponsor">
cristyaf8d6652011-02-04 21:57:45 +0000153 <a title="Sponsor: Best Web Hosting" href="http://webhostinggeeks.com">Best Web Hosting</a><!-- 201110010720 -->
154</div>
155<div class="sponsor">
156 <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
157</div>
158<div class="sponsor">
cristy2bd2a982011-02-15 00:52:58 +0000159 <a title="Sponsor: Druckerei" href="http://www.allesdruck.de">Druckerei</a><!-- 201107010240 r.leo -->
cristy178edaf2011-01-23 03:42:39 +0000160</div>
cristyec6b4752011-01-08 03:16:23 +0000161<div class="sponsor">
cristy52923442011-01-15 22:54:31 +0000162 <a title="Sponsor: Web Hosting" href="http://www.bodhost.com/hosting.shtml">Web Hosting</a><!-- 201104010090 -->
cristy7d52cd62010-10-01 17:26:59 +0000163</div>
164<div class="sponsor">
cristyc5baf4f2010-08-31 15:05:33 +0000165 <a title="Sponsor: Image Converter" href="http://www.batchphoto.com">Image Converter</a><!-- 201103010900 Bits Coffee-->
166</div>
167<div class="sponsor">
cristy851dbce2010-08-06 21:40:00 +0000168 <a title="Sponsor: Flyer drucken" href="http://www.online-druck.biz">Flyer drucken</a><!-- 201109010900 Floeter-->
169</div>
cristyec6b4752011-01-08 03:16:23 +0000170<div class="sponsor">
cristy178edaf2011-01-23 03:42:39 +0000171 <a title="Sponsor: Druckerei" href="http://print24.com/de/">Druckerei</a><!-- 201110010720 -->
172</div>
173<div class="sponsor">
cristy6bcf48e2011-02-15 19:09:04 +0000174 <a title="Sponsor: Custom T-Shirts" href="http://www.ooshirts.com">Custom T-Shirts</a><!-- 2011050100030 ooshirts.com-->
cristyec6b4752011-01-08 03:16:23 +0000175</div>
cristy3ed852e2009-09-05 21:47:34 +0000176</div>
177</div>
cristyce69bb02010-07-27 19:49:46 +0000178</div>
cristy3eaa0ef2010-03-06 20:35:26 +0000179
cristyce69bb02010-07-27 19:49:46 +0000180<div class="eastbar">
181 <script type="text/javascript">
182 <!--
183 google_ad_client = "pub-3129977114552745";
cristyce69bb02010-07-27 19:49:46 +0000184 google_ad_slot = "0574824969";
185 google_ad_width = 160;
186 google_ad_height = 600;
187 //-->
188 </script>
189 <script type="text/javascript"
190 src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
191 </script>
cristy3eaa0ef2010-03-06 20:35:26 +0000192</div>
193
194<div class="main">
195
cristy350dea42011-02-15 17:31:04 +0000196<h1>Module distort Methods</h1>
cristy6f77f692011-02-15 15:31:39 +0000197<p class="navigation-index">[<a href="#DistortImage">DistortImage</a> &bull; <a href="#SparseColorImage">SparseColorImage</a>]</p>
cristy3ed852e2009-09-05 21:47:34 +0000198
cristy350dea42011-02-15 17:31:04 +0000199<h2><a href="http://www.imagemagick.org/api/MagickCore/distort_8c.html" id="DistortImage">DistortImage</a></h2>
cristy6f77f692011-02-15 15:31:39 +0000200<div class="doc-section">
201
202<p>DistortImage() distorts an image using various distortion methods, by mapping color lookups of the source image to a new destination image usally of the same size as the source image, unless 'bestfit' is set to true.</p>
203
204<p>If 'bestfit' is enabled, and distortion allows it, the destination image is adjusted to ensure the whole source 'image' will just fit within the final destination image, which will be sized and offset accordingly. Also in many cases the virtual offset of the source image will be taken into account in the mapping.</p>
205
206<p>If the '-verbose' control option has been set print to standard error the equicelent '-fx' formula with coefficients for the function, if practical.</p>
207
208<p>The format of the DistortImage() method is:</p>
209
210<pre class="code">
211 Image *DistortImage(const Image *image,const DistortImageMethod method,
212 const size_t number_arguments,const double *arguments,
213 MagickBooleanType bestfit, ExceptionInfo *exception)
214</pre>
215
216<p>A description of each parameter follows:</p>
217
218<h5>image</h5>
219<p>the image to be distorted.</p>
220
221<h5>method</h5>
222<p>the method of image distortion.</p>
223
224<p>ArcDistortion always ignores source image offset, and always 'bestfit' the destination image with the top left corner offset relative to the polar mapping center.</p>
225
226<p>Affine, Perspective, and Bilinear, do least squares fitting of the distrotion when more than the minimum number of control point pairs are provided.</p>
227
228<p>Perspective, and Bilinear, fall back to a Affine distortion when less than 4 control point pairs are provided. While Affine distortions let you use any number of control point pairs, that is Zero pairs is a No-Op (viewport only) distortion, one pair is a translation and two pairs of control points do a scale-rotate-translate, without any shearing.</p>
229
230<h5>number_arguments</h5>
231<p>the number of arguments given.</p>
232
233<h5>arguments</h5>
234<p>an array of floating point arguments for this method.</p>
235
236<h5>bestfit</h5>
237<p>Attempt to 'bestfit' the size of the resulting image. This also forces the resulting image to be a 'layered' virtual canvas image. Can be overridden using 'distort:viewport' setting.</p>
238
239<h5>exception</h5>
240<p>return any errors or warnings in this structure</p>
241
242<p>Extra Controls from Image meta-data (artifacts)...</p>
243
244<p>o "verbose" Output to stderr alternatives, internal coefficents, and FX equivelents for the distortion operation (if feasible). This forms an extra check of the distortion method, and allows users access to the internal constants IM calculates for the distortion.</p>
245
246<p>o "distort:viewport" Directly set the output image canvas area and offest to use for the resulting image, rather than use the original images canvas, or a calculated 'bestfit' canvas.</p>
247
248<p>o "distort:scale" Scale the size of the output canvas by this amount to provide a method of Zooming, and for super-sampling the results.</p>
249
250<p>Other settings that can effect results include</p>
251
252<p>o 'interpolate' For source image lookups (scale enlargements)</p>
253
254<p>o 'filter' Set filter to use for area-resampling (scale shrinking). Set to 'point' to turn off and use 'interpolate' lookup instead</p>
255
256 </div>
cristy350dea42011-02-15 17:31:04 +0000257<h2><a href="http://www.imagemagick.org/api/MagickCore/distort_8c.html" id="SparseColorImage">SparseColorImage</a></h2>
cristy6f77f692011-02-15 15:31:39 +0000258<div class="doc-section">
259
260<p>SparseColorImage(), given a set of coordinates, interpolates the colors found at those coordinates, across the whole image, using various methods.</p>
261
262<p>The format of the SparseColorImage() method is:</p>
263
264<pre class="code">
265 Image *SparseColorImage(const Image *image,const ChannelType channel,
266 const SparseColorMethod method,const size_t number_arguments,
267 const double *arguments,ExceptionInfo *exception)
268</pre>
269
270<p>A description of each parameter follows:</p>
271
272<h5>image</h5>
273<p>the image to be filled in.</p>
274
275<h5>channel</h5>
276<p>Specify which color values (in RGBKA sequence) are being set. This also determines the number of color_values in above.</p>
277
278<h5>method</h5>
279<p>the method to fill in the gradient between the control points.</p>
280
281<p>The methods used for SparseColor() are often simular to methods used for DistortImage(), and even share the same code for determination of the function coefficents, though with more dimensions (or resulting values).</p>
282
283<h5>number_arguments</h5>
284<p>the number of arguments given.</p>
285
286<h5>arguments</h5>
287<p>array of floating point arguments for this method-- x,y,color_values-- with color_values given as normalized values.</p>
288
289<h5>exception</h5>
290<p>return any errors or warnings in this structure</p>
291
292 </div>
cristy3eaa0ef2010-03-06 20:35:26 +0000293
294</div>
295
296<div id="linkbar">
cristyce69bb02010-07-27 19:49:46 +0000297 <span id="linkbar-west">&nbsp;</span>
cristy3eaa0ef2010-03-06 20:35:26 +0000298 <span id="linkbar-center">
299 <a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> &bull;
cristya8902942010-07-30 00:49:52 +0000300 <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>
cristy3eaa0ef2010-03-06 20:35:26 +0000301 </span>
302 <span id="linkbar-east">&nbsp;</span>
303 </div>
304 <div class="footer">
cristy4103d562010-12-10 01:38:54 +0000305 <span id="footer-west">&copy; 1999-2011 ImageMagick Studio LLC</span>
cristy3eaa0ef2010-03-06 20:35:26 +0000306 <span id="footer-east"> <a href="../http://www.imagemagick.org/script/contact.php">Contact the Wizards</a></span>
307 </div>
308 <div style="clear: both; margin: 0; width: 100%; "></div>
cristya8902942010-07-30 00:49:52 +0000309 <script type="text/javascript">
310 var _gaq = _gaq || [];
311 _gaq.push(['_setAccount', 'UA-17690367-1']);
312 _gaq.push(['_trackPageview']);
313
314 (function() {
315 var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
316 ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
317 var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
318 })();
319 </script>
cristy3eaa0ef2010-03-06 20:35:26 +0000320</body>
321</html>