1 2 3 4 5<!doctype html> 6<html lang="en"> 7<head> 8 <meta charset="utf-8" /> 9 <meta name="viewport" content="width=device-width, initial-scale=1" /> 10 <title>ImageMagick - MagickCore, C API: Get or Set Image Pixels</title> 11 <meta name="application-name" content="ImageMagick" /> 12 <meta name="description" content="Use ImageMagick® to create, edit, compose, and convert digital images. Resize an image, crop it, change its shades and colors, add captions, and more." /> 13 <meta name="application-url" content="https://imagemagick.org" /> 14 <meta name="generator" content="PHP" /> 15 <meta name="keywords" content="magickcore, c, api:, get, or, set, image, pixels, image processing software" /> 16 <meta name="rating" content="GENERAL" /> 17 <meta name="robots" content="INDEX, FOLLOW" /> 18 <meta name="generator" content="ImageMagick Studio LLC" /> 19 <meta name="author" content="ImageMagick Studio LLC" /> 20 <meta name="revisit-after" content="2 DAYS" /> 21 <meta name="resource-type" content="document" /> 22 <meta name="copyright" content="Copyright (c) 1999-2020 ImageMagick Studio LLC" /> 23 <meta name="distribution" content="Global" /> 24 <meta name="magick-serial" content="P131-S030410-R485315270133-P82224-A6668-G1245-1" /> 25 <meta property='og:url' content='../../' /> 26 <meta property='og:title' content='ImageMagick' /> 27 <meta property='og:image' content='../../../images/logo.png' /> 28 <meta property='og:type' content='website' /> 29 <meta property='og:site_name' content='ImageMagick' /> 30 <meta property='og:description' content="Create, Edit, Compose, or Convert Digital Images" /> 31 <meta name="google-site-verification" content="_bMOCDpkx9ZAzBwb2kF3PRHbfUUdFj2uO8Jd1AXArz4" /> 32 <link href="cache.html" rel="canonical" /> 33 <link href="../../../images/wand.png" rel="icon" /> 34 <link href="../../../images/wand.ico" rel="shortcut icon" /> 35 <link href="../../assets/magick.css" rel="stylesheet" /> 36</head> 37<body> 38 <nav class="navbar navbar-expand-md navbar-dark bg-dark fixed-top"> 39 <div class="container-fluid"> 40 <a class="navbar-brand" href="../../"><img class="d-block" id="icon" alt="ImageMagick" width="32" height="32" src="../../../images/wand.ico"/></a> 41 <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#magick-navbars" aria-controls="magick-navbars" aria-expanded="false" aria-label="Toggle navigation"> 42 <span class="navbar-toggler-icon"></span> 43 </button> 44 45 <div class="collapse navbar-collapse" id="magick-navbars"> 46 <ul class="navbar-nav me-auto mb-2 mb-md-0"> 47 <li class="nav-item"> 48 <a class="nav-link " href="../../www/index.html">Home</a> 49 </li> 50 <li class="nav-item"> 51 <a class="nav-link " href="../../www/download.html">Download</a> 52 </li> 53 <li class="nav-item"> 54 <a class="nav-link " href="../../www/command-line-tools.html">Tools</a> 55 </li> 56 <li class="nav-item"> 57 <a class="nav-link " href="../../www/command-line-processing.html">CLI</a> 58 </li> 59 <li class="nav-item"> 60 <a class="nav-link " href="../../www/develop.html">Develop</a> 61 </li> 62 <li class="nav-item"> 63 <a class="nav-link" target="_blank" href="https://github.com/ImageMagick/ImageMagick/discussions">Community</a> 64 </li> 65 <li class="nav-item"> 66 <iframe src="https://github.com/sponsors/ImageMagick/button" title="Sponsor ImageMagick" height="35" width="107" style="border: 0;"></iframe> 67 </li> 68 </ul> 69 <form class="d-flex form-inline" action="https://imagemagick.org/script/search.php"> 70 <input class="form-control me-2" type="text" name="q" placeholder="Search" aria-label="Search"> 71 <button class="btn btn-outline-success" type="submit" name="sa">Search</button> 72 </form> 73 </div> 74 </div> 75 </nav> 76 77 <div class="container"> 78 <script async="async" src="https://localhost/pagead/js/adsbygoogle.js"></script> 79 <ins class="adsbygoogle" 80 style="display:block" 81 data-ad-client="ca-pub-3129977114552745" 82 data-ad-slot="6345125851" 83 data-full-width-responsive="true" 84 data-ad-format="horizontal"></ins> 85 <script> 86 (adsbygoogle = window.adsbygoogle || []).push({}); 87 </script> 88 89 </div> 90 91 <main class="container"> 92 <div class="magick-template"> 93<div class="magick-header"> 94<p class="text-center"><a href="cache.html#AcquirePixelCacheNexus">AcquirePixelCacheNexus</a> • <a href="cache.html#AcquirePixelCachePixels">AcquirePixelCachePixels</a> • <a href="cache.html#GetAuthenticMetacontent">GetAuthenticMetacontent</a> • <a href="cache.html#GetAuthenticPixelQueue">GetAuthenticPixelQueue</a> • <a href="cache.html#GetAuthenticPixels">GetAuthenticPixels</a> • <a href="cache.html#GetOneAuthenticPixel">GetOneAuthenticPixel</a> • <a href="cache.html#GetOneVirtualPixel">GetOneVirtualPixel</a> • <a href="cache.html#GetOneVirtualPixelInfo">GetOneVirtualPixelInfo</a> • <a href="cache.html#GetVirtualMetacontent">GetVirtualMetacontent</a> • <a href="cache.html#GetVirtualPixelQueue">GetVirtualPixelQueue</a> • <a href="cache.html#GetVirtualPixels">GetVirtualPixels</a> • <a href="cache.html#QueueAuthenticPixels">QueueAuthenticPixels</a> • <a href="cache.html#SetPixelCacheVirtualMethod">SetPixelCacheVirtualMethod</a> • <a href="cache.html#SyncAuthenticPixels">SyncAuthenticPixels</a></p> 95 96<h2><a href="../../api/MagickCore/cache_8c.html" id="AcquirePixelCacheNexus">AcquirePixelCacheNexus</a></h2> 97 98<p>AcquirePixelCacheNexus() allocates the NexusInfo structure.</p> 99 100<p>The format of the AcquirePixelCacheNexus method is:</p> 101 102<pre class="text"> 103NexusInfo **AcquirePixelCacheNexus(const size_t number_threads) 104</pre> 105 106<p>A description of each parameter follows:</p> 107 108<dd> 109</dd> 110 111<dd> </dd> 112<dl class="dl-horizontal"> 113<dt>number_threads</dt> 114<dd>the number of nexus threads. </dd> 115 116<dd> </dd> 117</dl> 118<h2><a href="../../api/MagickCore/cache_8c.html" id="AcquirePixelCachePixels">AcquirePixelCachePixels</a></h2> 119 120<p>AcquirePixelCachePixels() returns the pixels associated with the specified image.</p> 121 122<p>The format of the AcquirePixelCachePixels() method is:</p> 123 124<pre class="text"> 125void *AcquirePixelCachePixels(const Image *image,size_t *length, 126 ExceptionInfo *exception) 127</pre> 128 129<p>A description of each parameter follows:</p> 130 131<dd> 132</dd> 133 134<dd> </dd> 135<dl class="dl-horizontal"> 136<dt>image</dt> 137<dd>the image. </dd> 138 139<dd> </dd> 140<dt>length</dt> 141<dd>the pixel cache length. </dd> 142 143<dd> </dd> 144<dt>exception</dt> 145<dd>return any errors or warnings in this structure. </dd> 146 147<dd> </dd> 148</dl> 149<h2><a href="../../api/MagickCore/cache_8c.html" id="GetAuthenticMetacontent">GetAuthenticMetacontent</a></h2> 150 151<p>GetAuthenticMetacontent() returns the authentic metacontent corresponding with the last call to QueueAuthenticPixels() or GetVirtualPixels(). NULL is returned if the associated pixels are not available.</p> 152 153<p>The format of the GetAuthenticMetacontent() method is:</p> 154 155<pre class="text"> 156void *GetAuthenticMetacontent(const Image *image) 157</pre> 158 159<p>A description of each parameter follows:</p> 160 161<dd> 162</dd> 163 164<dd> </dd> 165<dl class="dl-horizontal"> 166<dt>image</dt> 167<dd>the image. </dd> 168 169<dd> </dd> 170</dl> 171<h2><a href="../../api/MagickCore/cache_8c.html" id="GetAuthenticPixelQueue">GetAuthenticPixelQueue</a></h2> 172 173<p>GetAuthenticPixelQueue() returns the authentic pixels associated corresponding with the last call to QueueAuthenticPixels() or GetAuthenticPixels().</p> 174 175<p>The format of the GetAuthenticPixelQueue() method is:</p> 176 177<pre class="text"> 178Quantum *GetAuthenticPixelQueue(const Image image) 179</pre> 180 181<p>A description of each parameter follows:</p> 182 183<dd> 184</dd> 185 186<dd> </dd> 187<dl class="dl-horizontal"> 188<dt>image</dt> 189<dd>the image. </dd> 190 191<dd> </dd> 192</dl> 193<h2><a href="../../api/MagickCore/cache_8c.html" id="GetAuthenticPixels">GetAuthenticPixels</a></h2> 194 195<p>GetAuthenticPixels() obtains a pixel region for read/write access. If the region is successfully accessed, a pointer to a Quantum array representing the region is returned, otherwise NULL is returned.</p> 196 197<p>The returned pointer may point to a temporary working copy of the pixels or it may point to the original pixels in memory. Performance is maximized if the selected region is part of one row, or one or more full rows, since then there is opportunity to access the pixels in-place (without a copy) if the image is in memory, or in a memory-mapped file. The returned pointer must *never* be deallocated by the user.</p> 198 199<p>Pixels accessed via the returned pointer represent a simple array of type Quantum. If the image has corresponding metacontent,call GetAuthenticMetacontent() after invoking GetAuthenticPixels() to obtain the meta-content corresponding to the region. Once the Quantum array has been updated, the changes must be saved back to the underlying image using SyncAuthenticPixels() or they may be lost.</p> 200 201<p>The format of the GetAuthenticPixels() method is:</p> 202 203<pre class="text"> 204Quantum *GetAuthenticPixels(Image *image,const ssize_t x, 205 const ssize_t y,const size_t columns,const size_t rows, 206 ExceptionInfo *exception) 207</pre> 208 209<p>A description of each parameter follows:</p> 210 211<dd> 212</dd> 213 214<dd> </dd> 215<dl class="dl-horizontal"> 216<dt>image</dt> 217<dd>the image. </dd> 218 219<dd> </dd> 220<dt>x,y,columns,rows</dt> 221<dd> These values define the perimeter of a region of pixels. </dd> 222 223<dd> </dd> 224<dt>exception</dt> 225<dd>return any errors or warnings in this structure. </dd> 226 227<dd> </dd> 228</dl> 229<h2><a href="../../api/MagickCore/cache_8c.html" id="GetOneAuthenticPixel">GetOneAuthenticPixel</a></h2> 230 231<p>GetOneAuthenticPixel() returns a single pixel at the specified (x,y) location. The image background color is returned if an error occurs.</p> 232 233<p>The format of the GetOneAuthenticPixel() method is:</p> 234 235<pre class="text"> 236MagickBooleanType GetOneAuthenticPixel(const Image image,const ssize_t x, 237 const ssize_t y,Quantum *pixel,ExceptionInfo *exception) 238</pre> 239 240<p>A description of each parameter follows:</p> 241 242<dd> 243</dd> 244 245<dd> </dd> 246<dl class="dl-horizontal"> 247<dt>image</dt> 248<dd>the image. </dd> 249 250<dd> </dd> 251<dt>x,y</dt> 252<dd> These values define the location of the pixel to return. </dd> 253 254<dd> </dd> 255<dt>pixel</dt> 256<dd>return a pixel at the specified (x,y) location. </dd> 257 258<dd> </dd> 259<dt>exception</dt> 260<dd>return any errors or warnings in this structure. </dd> 261 262<dd> </dd> 263</dl> 264<h2><a href="../../api/MagickCore/cache_8c.html" id="GetOneVirtualPixel">GetOneVirtualPixel</a></h2> 265 266<p>GetOneVirtualPixel() returns a single virtual pixel at the specified (x,y) location. The image background color is returned if an error occurs. If you plan to modify the pixel, use GetOneAuthenticPixel() instead.</p> 267 268<p>The format of the GetOneVirtualPixel() method is:</p> 269 270<pre class="text"> 271MagickBooleanType GetOneVirtualPixel(const Image image,const ssize_t x, 272 const ssize_t y,Quantum *pixel,ExceptionInfo exception) 273</pre> 274 275<p>A description of each parameter follows:</p> 276 277<dd> 278</dd> 279 280<dd> </dd> 281<dl class="dl-horizontal"> 282<dt>image</dt> 283<dd>the image. </dd> 284 285<dd> </dd> 286<dt>x,y</dt> 287<dd> These values define the location of the pixel to return. </dd> 288 289<dd> </dd> 290<dt>pixel</dt> 291<dd>return a pixel at the specified (x,y) location. </dd> 292 293<dd> </dd> 294<dt>exception</dt> 295<dd>return any errors or warnings in this structure. </dd> 296 297<dd> </dd> 298</dl> 299<h2><a href="../../api/MagickCore/cache_8c.html" id="GetOneVirtualPixelInfo">GetOneVirtualPixelInfo</a></h2> 300 301<p>GetOneVirtualPixelInfo() returns a single pixel at the specified (x,y) location. The image background color is returned if an error occurs. If you plan to modify the pixel, use GetOneAuthenticPixel() instead.</p> 302 303<p>The format of the GetOneVirtualPixelInfo() method is:</p> 304 305<pre class="text"> 306MagickBooleanType GetOneVirtualPixelInfo(const Image image, 307 const VirtualPixelMethod virtual_pixel_method,const ssize_t x, 308 const ssize_t y,PixelInfo *pixel,ExceptionInfo exception) 309</pre> 310 311<p>A description of each parameter follows:</p> 312 313<dd> 314</dd> 315 316<dd> </dd> 317<dl class="dl-horizontal"> 318<dt>image</dt> 319<dd>the image. </dd> 320 321<dd> </dd> 322<dt>virtual_pixel_method</dt> 323<dd>the virtual pixel method. </dd> 324 325<dd> </dd> 326<dt>x,y</dt> 327<dd> these values define the location of the pixel to return. </dd> 328 329<dd> </dd> 330<dt>pixel</dt> 331<dd>return a pixel at the specified (x,y) location. </dd> 332 333<dd> </dd> 334<dt>exception</dt> 335<dd>return any errors or warnings in this structure. </dd> 336 337<dd> </dd> 338</dl> 339<h2><a href="../../api/MagickCore/cache_8c.html" id="GetVirtualMetacontent">GetVirtualMetacontent</a></h2> 340 341<p>GetVirtualMetacontent() returns the virtual metacontent corresponding with the last call to QueueAuthenticPixels() or GetVirtualPixels(). NULL is returned if the meta-content are not available.</p> 342 343<p>The format of the GetVirtualMetacontent() method is:</p> 344 345<pre class="text"> 346const void *GetVirtualMetacontent(const Image *image) 347</pre> 348 349<p>A description of each parameter follows:</p> 350 351<dd> 352</dd> 353 354<dd> </dd> 355<dl class="dl-horizontal"> 356<dt>image</dt> 357<dd>the image. </dd> 358 359<dd> </dd> 360</dl> 361<h2><a href="../../api/MagickCore/cache_8c.html" id="GetVirtualPixelQueue">GetVirtualPixelQueue</a></h2> 362 363<p>GetVirtualPixelQueue() returns the virtual pixels associated corresponding with the last call to QueueAuthenticPixels() or GetVirtualPixels().</p> 364 365<p>The format of the GetVirtualPixelQueue() method is:</p> 366 367<pre class="text"> 368const Quantum *GetVirtualPixelQueue(const Image image) 369</pre> 370 371<p>A description of each parameter follows:</p> 372 373<dd> 374</dd> 375 376<dd> </dd> 377<dl class="dl-horizontal"> 378<dt>image</dt> 379<dd>the image. </dd> 380 381<dd> </dd> 382</dl> 383<h2><a href="../../api/MagickCore/cache_8c.html" id="GetVirtualPixels">GetVirtualPixels</a></h2> 384 385<p>GetVirtualPixels() returns an immutable pixel region. If the region is successfully accessed, a pointer to it is returned, otherwise NULL is returned. The returned pointer may point to a temporary working copy of the pixels or it may point to the original pixels in memory. Performance is maximized if the selected region is part of one row, or one or more full rows, since there is opportunity to access the pixels in-place (without a copy) if the image is in memory, or in a memory-mapped file. The returned pointer must *never* be deallocated by the user.</p> 386 387<p>Pixels accessed via the returned pointer represent a simple array of type Quantum. If the image type is CMYK or the storage class is PseudoClass, call GetAuthenticMetacontent() after invoking GetAuthenticPixels() to access the meta-content (of type void) corresponding to the region.</p> 388 389<p>If you plan to modify the pixels, use GetAuthenticPixels() instead.</p> 390 391<p>Note, the GetVirtualPixels() and GetAuthenticPixels() methods are not thread- safe. In a threaded environment, use GetCacheViewVirtualPixels() or GetCacheViewAuthenticPixels() instead.</p> 392 393<p>The format of the GetVirtualPixels() method is:</p> 394 395<pre class="text"> 396const Quantum *GetVirtualPixels(const Image *image,const ssize_t x, 397 const ssize_t y,const size_t columns,const size_t rows, 398 ExceptionInfo *exception) 399</pre> 400 401<p>A description of each parameter follows:</p> 402 403<dd> 404</dd> 405 406<dd> </dd> 407<dl class="dl-horizontal"> 408<dt>image</dt> 409<dd>the image. </dd> 410 411<dd> </dd> 412<dt>x,y,columns,rows</dt> 413<dd> These values define the perimeter of a region of pixels. </dd> 414 415<dd> </dd> 416<dt>exception</dt> 417<dd>return any errors or warnings in this structure. </dd> 418 419<dd> </dd> 420</dl> 421<h2><a href="../../api/MagickCore/cache_8c.html" id="QueueAuthenticPixels">QueueAuthenticPixels</a></h2> 422 423<p>QueueAuthenticPixels() queues a mutable pixel region. If the region is successfully initialized a pointer to a Quantum array representing the region is returned, otherwise NULL is returned. The returned pointer may point to a temporary working buffer for the pixels or it may point to the final location of the pixels in memory.</p> 424 425<p>Write-only access means that any existing pixel values corresponding to the region are ignored. This is useful if the initial image is being created from scratch, or if the existing pixel values are to be completely replaced without need to refer to their pre-existing values. The application is free to read and write the pixel buffer returned by QueueAuthenticPixels() any way it pleases. QueueAuthenticPixels() does not initialize the pixel array values. Initializing pixel array values is the application's responsibility.</p> 426 427<p>Performance is maximized if the selected region is part of one row, or one or more full rows, since then there is opportunity to access the pixels in-place (without a copy) if the image is in memory, or in a memory-mapped file. The returned pointer must *never* be deallocated by the user.</p> 428 429<p>Pixels accessed via the returned pointer represent a simple array of type Quantum. If the image type is CMYK or the storage class is PseudoClass, call GetAuthenticMetacontent() after invoking GetAuthenticPixels() to obtain the meta-content (of type void) corresponding to the region. Once the Quantum (and/or Quantum) array has been updated, the changes must be saved back to the underlying image using SyncAuthenticPixels() or they may be lost.</p> 430 431<p>The format of the QueueAuthenticPixels() method is:</p> 432 433<pre class="text"> 434Quantum *QueueAuthenticPixels(Image *image,const ssize_t x, 435 const ssize_t y,const size_t columns,const size_t rows, 436 ExceptionInfo *exception) 437</pre> 438 439<p>A description of each parameter follows:</p> 440 441<dd> 442</dd> 443 444<dd> </dd> 445<dl class="dl-horizontal"> 446<dt>image</dt> 447<dd>the image. </dd> 448 449<dd> </dd> 450<dt>x,y,columns,rows</dt> 451<dd> These values define the perimeter of a region of pixels. </dd> 452 453<dd> </dd> 454<dt>exception</dt> 455<dd>return any errors or warnings in this structure. </dd> 456 457<dd> </dd> 458</dl> 459<h2><a href="../../api/MagickCore/cache_8c.html" id="SetPixelCacheVirtualMethod">SetPixelCacheVirtualMethod</a></h2> 460 461<p>SetPixelCacheVirtualMethod() sets the "virtual pixels" method for the pixel cache and returns the previous setting. A virtual pixel is any pixel access that is outside the boundaries of the image cache.</p> 462 463<p>The format of the SetPixelCacheVirtualMethod() method is:</p> 464 465<pre class="text"> 466VirtualPixelMethod SetPixelCacheVirtualMethod(Image *image, 467 const VirtualPixelMethod virtual_pixel_method,ExceptionInfo *exception) 468</pre> 469 470<p>A description of each parameter follows:</p> 471 472<dd> 473</dd> 474 475<dd> </dd> 476<dl class="dl-horizontal"> 477<dt>image</dt> 478<dd>the image. </dd> 479 480<dd> </dd> 481<dt>virtual_pixel_method</dt> 482<dd>choose the type of virtual pixel. </dd> 483 484<dd> </dd> 485<dt>exception</dt> 486<dd>return any errors or warnings in this structure. </dd> 487 488<dd> </dd> 489</dl> 490<h2><a href="../../api/MagickCore/cache_8c.html" id="SyncAuthenticPixels">SyncAuthenticPixels</a></h2> 491 492<p>SyncAuthenticPixels() saves the image pixels to the in-memory or disk cache. The method returns MagickTrue if the pixel region is flushed, otherwise MagickFalse.</p> 493 494<p>The format of the SyncAuthenticPixels() method is:</p> 495 496<pre class="text"> 497MagickBooleanType SyncAuthenticPixels(Image *image, 498 ExceptionInfo *exception) 499</pre> 500 501<p>A description of each parameter follows:</p> 502 503<dd> 504</dd> 505 506<dd> </dd> 507<dl class="dl-horizontal"> 508<dt>image</dt> 509<dd>the image. </dd> 510 511<dd> </dd> 512<dt>exception</dt> 513<dd>return any errors or warnings in this structure. </dd> 514 515<dd> </dd> 516</dl> 517</div> 518 </div> 519 </main><!-- /.container --> 520 <footer class="magick-footer"> 521 <div class="container-fluid"> 522 <a href="../../www/security-policy.html">Security</a> • 523 <a href="../../www/news.html">News</a> 524 525 <a href="cache.html#"><img class="d-inline" id="wand" alt="And Now a Touch of Magick" width="16" height="16" src="../../../images/wand.ico"/></a> 526 527 <a href="../../www/links.html">Related</a> • 528 <a href="../../www/sitemap.html">Sitemap</a> 529 <br/> 530 <a href="../../www/support.html">Sponsor</a> • 531 <a href="../../www/cite.html">Cite</a> • 532 <a href="http://pgp.mit.edu/pks/lookup?op=get&search=0x89AB63D48277377A">Public Key</a> • 533 <a href="../../www/contact.html">Contact Us</a> 534 <br/> 535 <a href="https://github.com/imagemagick/imagemagick" target="_blank" rel="noopener" aria-label="GitHub"><svg xmlns="http://www.w3.org/2000/svg" class="navbar-nav-svg" viewBox="0 0 512 499.36" width="2%" height="2%" role="img" focusable="false"><title>GitHub</title><path fill="currentColor" fill-rule="evenodd" d="M256 0C114.64 0 0 114.61 0 256c0 113.09 73.34 209 175.08 242.9 12.8 2.35 17.47-5.56 17.47-12.34 0-6.08-.22-22.18-.35-43.54-71.2 15.49-86.2-34.34-86.2-34.34-11.64-29.57-28.42-37.45-28.42-37.45-23.27-15.84 1.73-15.55 1.73-15.55 25.69 1.81 39.21 26.38 39.21 26.38 22.84 39.12 59.92 27.82 74.5 21.27 2.33-16.54 8.94-27.82 16.25-34.22-56.84-6.43-116.6-28.43-116.6-126.49 0-27.95 10-50.8 26.35-68.69-2.63-6.48-11.42-32.5 2.51-67.75 0 0 21.49-6.88 70.4 26.24a242.65 242.65 0 0 1 128.18 0c48.87-33.13 70.33-26.24 70.33-26.24 14 35.25 5.18 61.27 2.55 67.75 16.41 17.9 26.31 40.75 26.31 68.69 0 98.35-59.85 120-116.88 126.32 9.19 7.9 17.38 23.53 17.38 47.41 0 34.22-.31 61.83-.31 70.23 0 6.85 4.61 14.81 17.6 12.31C438.72 464.97 512 369.08 512 256.02 512 114.62 397.37 0 256 0z"/></svg></a> • 536 <a href="https://twitter.com/imagemagick" target="_blank" rel="noopener" aria-label="Twitter"><svg xmlns="http://www.w3.org/2000/svg" class="navbar-nav-svg" viewBox="0 0 512 416.32" width="2%" height="2%" role="img" focusable="false"><title>Twitter</title><path fill="currentColor" d="M160.83 416.32c193.2 0 298.92-160.22 298.92-298.92 0-4.51 0-9-.2-13.52A214 214 0 0 0 512 49.38a212.93 212.93 0 0 1-60.44 16.6 105.7 105.7 0 0 0 46.3-58.19 209 209 0 0 1-66.79 25.37 105.09 105.09 0 0 0-181.73 71.91 116.12 116.12 0 0 0 2.66 24c-87.28-4.3-164.73-46.3-216.56-109.82A105.48 105.48 0 0 0 68 159.6a106.27 106.27 0 0 1-47.53-13.11v1.43a105.28 105.28 0 0 0 84.21 103.06 105.67 105.67 0 0 1-47.33 1.84 105.06 105.06 0 0 0 98.14 72.94A210.72 210.72 0 0 1 25 370.84a202.17 202.17 0 0 1-25-1.43 298.85 298.85 0 0 0 160.83 46.92"/></svg></a> 537 <br/> 538 <small>© 1999-2021 ImageMagick Studio LLC</small> 539 </div> 540 </footer> 541 542 <!-- Javascript assets --> 543 <script src="../../assets/magick.js" ></script> 544 </body> 545</html> 546