• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 - MagickWand, C API: Wand View Methods</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="magickwc, api:, wview, methods, 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="wand-view.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="wand-view.html#CloneWandView">CloneWandView</a> &#8226; <a href="wand-view.html#DestroyWandView">DestroyWandView</a> &#8226; <a href="wand-view.html#DuplexTransferWandViewIterator">DuplexTransferWandViewIterator</a> &#8226; <a href="wand-view.html#GetWandViewException">GetWandViewException</a> &#8226; <a href="wand-view.html#GetWandViewExtent">GetWandViewExtent</a> &#8226; <a href="wand-view.html#GetWandViewIterator">GetWandViewIterator</a> &#8226; <a href="wand-view.html#GetWandViewPixels">GetWandViewPixels</a> &#8226; <a href="wand-view.html#GetWandViewWand">GetWandViewWand</a> &#8226; <a href="wand-view.html#IsWandView">IsWandView</a> &#8226; <a href="wand-view.html#NewWandView">NewWandView</a> &#8226; <a href="wand-view.html#NewWandViewExtent">NewWandViewExtent</a> &#8226; <a href="wand-view.html#SetWandViewDescription">SetWandViewDescription</a> &#8226; <a href="wand-view.html#SetWandViewIterator">SetWandViewIterator</a> &#8226; <a href="wand-view.html#TransferWandViewIterator">TransferWandViewIterator</a> &#8226; <a href="wand-view.html#UpdateWandViewIterator">UpdateWandViewIterator</a></p>
95
96<h2><a href="../../api/MagickWand/wand-view_8c.html" id="CloneWandView">CloneWandView</a></h2>
97
98<p>CloneWandView() makes a copy of the specified wand view.</p>
99
100<p>The format of the CloneWandView method is:</p>
101
102<pre class="text">
103WandView *CloneWandView(const WandView *wand_view)
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>wand_view</dt>
114<dd>the wand view. </dd>
115
116<dd>  </dd>
117</dl>
118<h2><a href="../../api/MagickWand/wand-view_8c.html" id="DestroyWandView">DestroyWandView</a></h2>
119
120<p>DestroyWandView() deallocates memory associated with a wand view.</p>
121
122<p>The format of the DestroyWandView method is:</p>
123
124<pre class="text">
125WandView *DestroyWandView(WandView *wand_view)
126</pre>
127
128<p>A description of each parameter follows:</p>
129
130<dd>
131</dd>
132
133<dd> </dd>
134<dl class="dl-horizontal">
135<dt>wand_view</dt>
136<dd>the wand view. </dd>
137
138<dd>  </dd>
139</dl>
140<h2><a href="../../api/MagickWand/wand-view_8c.html" id="DuplexTransferWandViewIterator">DuplexTransferWandViewIterator</a></h2>
141
142<p>DuplexTransferWandViewIterator() iterates over three wand views in parallel and calls your transfer method for each scanline of the view.  The source and duplex pixel extent is not confined to the image canvas-- that is you can include negative offsets or widths or heights that exceed the image dimension.  However, the destination wand view is confined to the image canvas-- that is no negative offsets or widths or heights that exceed the image dimension are permitted.</p>
143
144<p>The callback signature is:</p>
145
146<pre class="text">
147MagickBooleanType DuplexTransferImageViewMethod(const WandView *source,
148  const WandView *duplex,WandView *destination,const ssize_t y,
149  const int thread_id,void *context)
150</pre>
151
152<p>Use this pragma if the view is not single threaded:</p>
153
154<pre class="text">
155    #pragma omp critical
156</pre>
157
158<p>to define a section of code in your callback transfer method that must be executed by a single thread at a time.</p>
159
160<p>The format of the DuplexTransferWandViewIterator method is:</p>
161
162<pre class="text">
163MagickBooleanType DuplexTransferWandViewIterator(WandView *source,
164  WandView *duplex,WandView *destination,
165  DuplexTransferWandViewMethod transfer,void *context)
166</pre>
167
168<p>A description of each parameter follows:</p>
169
170<dd>
171</dd>
172
173<dd> </dd>
174<dl class="dl-horizontal">
175<dt>source</dt>
176<dd>the source wand view. </dd>
177
178<dd> </dd>
179<dt>duplex</dt>
180<dd>the duplex wand view. </dd>
181
182<dd> </dd>
183<dt>destination</dt>
184<dd>the destination wand view. </dd>
185
186<dd> </dd>
187<dt>transfer</dt>
188<dd>the transfer callback method. </dd>
189
190<dd> </dd>
191<dt>context</dt>
192<dd>the user defined context. </dd>
193
194<dd>  </dd>
195</dl>
196<h2><a href="../../api/MagickWand/wand-view_8c.html" id="GetWandViewException">GetWandViewException</a></h2>
197
198<p>GetWandViewException() returns the severity, reason, and description of any error that occurs when utilizing a wand view.</p>
199
200<p>The format of the GetWandViewException method is:</p>
201
202<pre class="text">
203char *GetWandViewException(const WandView *wand_view,
204  ExceptionType *severity)
205</pre>
206
207<p>A description of each parameter follows:</p>
208
209<dd>
210</dd>
211
212<dd> </dd>
213<dl class="dl-horizontal">
214<dt>wand_view</dt>
215<dd>the pixel wand_view. </dd>
216
217<dd> </dd>
218<dt>severity</dt>
219<dd>the severity of the error is returned here. </dd>
220
221<dd>  </dd>
222</dl>
223<h2><a href="../../api/MagickWand/wand-view_8c.html" id="GetWandViewExtent">GetWandViewExtent</a></h2>
224
225<p>GetWandViewExtent() returns the wand view extent.</p>
226
227<p>The format of the GetWandViewExtent method is:</p>
228
229<pre class="text">
230RectangleInfo GetWandViewExtent(const WandView *wand_view)
231</pre>
232
233<p>A description of each parameter follows:</p>
234
235<dd>
236</dd>
237
238<dd> </dd>
239<dl class="dl-horizontal">
240<dt>wand_view</dt>
241<dd>the wand view. </dd>
242
243<dd>  </dd>
244</dl>
245<h2><a href="../../api/MagickWand/wand-view_8c.html" id="GetWandViewIterator">GetWandViewIterator</a></h2>
246
247<p>GetWandViewIterator() iterates over the wand view in parallel and calls your get method for each scanline of the view.  The pixel extent is not confined to the image canvas-- that is you can include negative offsets or widths or heights that exceed the image dimension.  Any updates to the pixels in your callback are ignored.</p>
248
249<p>The callback signature is:</p>
250
251<pre class="text">
252MagickBooleanType GetImageViewMethod(const WandView *source,
253  const ssize_t y,const int thread_id,void *context)
254</pre>
255
256<p>Use this pragma if the view is not single threaded:</p>
257
258<pre class="text">
259    #pragma omp critical
260</pre>
261
262<p>to define a section of code in your callback get method that must be executed by a single thread at a time.</p>
263
264<p>The format of the GetWandViewIterator method is:</p>
265
266<pre class="text">
267MagickBooleanType GetWandViewIterator(WandView *source,
268  GetWandViewMethod get,void *context)
269</pre>
270
271<p>A description of each parameter follows:</p>
272
273<dd>
274</dd>
275
276<dd> </dd>
277<dl class="dl-horizontal">
278<dt>source</dt>
279<dd>the source wand view. </dd>
280
281<dd> </dd>
282<dt>get</dt>
283<dd>the get callback method. </dd>
284
285<dd> </dd>
286<dt>context</dt>
287<dd>the user defined context. </dd>
288
289<dd>  </dd>
290</dl>
291<h2><a href="../../api/MagickWand/wand-view_8c.html" id="GetWandViewPixels">GetWandViewPixels</a></h2>
292
293<p>GetWandViewPixels() returns the wand view pixel_wands.</p>
294
295<p>The format of the GetWandViewPixels method is:</p>
296
297<pre class="text">
298PixelWand *GetWandViewPixels(const WandView *wand_view)
299</pre>
300
301<p>A description of each parameter follows:</p>
302
303<dd>
304</dd>
305
306<dd> </dd>
307<dl class="dl-horizontal">
308<dt>wand_view</dt>
309<dd>the wand view. </dd>
310
311<dd>  </dd>
312</dl>
313<h2><a href="../../api/MagickWand/wand-view_8c.html" id="GetWandViewWand">GetWandViewWand</a></h2>
314
315<p>GetWandViewWand() returns the magick wand associated with the wand view.</p>
316
317<p>The format of the GetWandViewWand method is:</p>
318
319<pre class="text">
320MagickWand *GetWandViewWand(const WandView *wand_view)
321</pre>
322
323<p>A description of each parameter follows:</p>
324
325<dd>
326</dd>
327
328<dd> </dd>
329<dl class="dl-horizontal">
330<dt>wand_view</dt>
331<dd>the wand view. </dd>
332
333<dd>  </dd>
334</dl>
335<h2><a href="../../api/MagickWand/wand-view_8c.html" id="IsWandView">IsWandView</a></h2>
336
337<p>IsWandView() returns MagickTrue if the parameter is verified as a wand view object.</p>
338
339<p>The format of the IsWandView method is:</p>
340
341<pre class="text">
342MagickBooleanType IsWandView(const WandView *wand_view)
343</pre>
344
345<p>A description of each parameter follows:</p>
346
347<dd>
348</dd>
349
350<dd> </dd>
351<dl class="dl-horizontal">
352<dt>wand_view</dt>
353<dd>the wand view. </dd>
354
355<dd>  </dd>
356</dl>
357<h2><a href="../../api/MagickWand/wand-view_8c.html" id="NewWandView">NewWandView</a></h2>
358
359<p>NewWandView() returns a wand view required for all other methods in the Wand View API.</p>
360
361<p>The format of the NewWandView method is:</p>
362
363<pre class="text">
364WandView *NewWandView(MagickWand *wand)
365</pre>
366
367<p>A description of each parameter follows:</p>
368
369<dd>
370</dd>
371
372<dd> </dd>
373<dl class="dl-horizontal">
374<dt>wand</dt>
375<dd>the wand. </dd>
376
377<dd>  </dd>
378</dl>
379<h2><a href="../../api/MagickWand/wand-view_8c.html" id="NewWandViewExtent">NewWandViewExtent</a></h2>
380
381<p>NewWandViewExtent() returns a wand view required for all other methods in the Wand View API.</p>
382
383<p>The format of the NewWandViewExtent method is:</p>
384
385<pre class="text">
386WandView *NewWandViewExtent(MagickWand *wand,const ssize_t x,
387  const ssize_t y,const size_t width,const size_t height)
388</pre>
389
390<p>A description of each parameter follows:</p>
391
392<dd>
393</dd>
394
395<dd> </dd>
396<dl class="dl-horizontal">
397<dt>wand</dt>
398<dd>the magick wand. </dd>
399
400<dd> </dd>
401<dt>x,y,columns,rows</dt>
402<dd> These values define the perimeter of a extent of pixel_wands view. </dd>
403
404<dd>  </dd>
405</dl>
406<h2><a href="../../api/MagickWand/wand-view_8c.html" id="SetWandViewDescription">SetWandViewDescription</a></h2>
407
408<p>SetWandViewDescription() associates a description with an image view.</p>
409
410<p>The format of the SetWandViewDescription method is:</p>
411
412<pre class="text">
413void SetWandViewDescription(WandView *image_view,const char *description)
414</pre>
415
416<p>A description of each parameter follows:</p>
417
418<dd>
419</dd>
420
421<dd> </dd>
422<dl class="dl-horizontal">
423<dt>wand_view</dt>
424<dd>the wand view. </dd>
425
426<dd> </dd>
427<dt>description</dt>
428<dd>the wand view description. </dd>
429
430<dd>  </dd>
431</dl>
432<h2><a href="../../api/MagickWand/wand-view_8c.html" id="SetWandViewIterator">SetWandViewIterator</a></h2>
433
434<p>SetWandViewIterator() iterates over the wand view in parallel and calls your set method for each scanline of the view.  The pixel extent is confined to the image canvas-- that is no negative offsets or widths or heights that exceed the image dimension.  The pixels are initiallly undefined and any settings you make in the callback method are automagically synced back to your image.</p>
435
436<p>The callback signature is:</p>
437
438<pre class="text">
439MagickBooleanType SetImageViewMethod(ImageView *destination,
440  const ssize_t y,const int thread_id,void *context)
441</pre>
442
443<p>Use this pragma if the view is not single threaded:</p>
444
445<pre class="text">
446    #pragma omp critical
447</pre>
448
449<p>to define a section of code in your callback set method that must be executed by a single thread at a time.</p>
450
451<p>The format of the SetWandViewIterator method is:</p>
452
453<pre class="text">
454MagickBooleanType SetWandViewIterator(WandView *destination,
455  SetWandViewMethod set,void *context)
456</pre>
457
458<p>A description of each parameter follows:</p>
459
460<dd>
461</dd>
462
463<dd> </dd>
464<dl class="dl-horizontal">
465<dt>destination</dt>
466<dd>the wand view. </dd>
467
468<dd> </dd>
469<dt>set</dt>
470<dd>the set callback method. </dd>
471
472<dd> </dd>
473<dt>context</dt>
474<dd>the user defined context. </dd>
475
476<dd>  </dd>
477</dl>
478<h2><a href="../../api/MagickWand/wand-view_8c.html" id="TransferWandViewIterator">TransferWandViewIterator</a></h2>
479
480<p>TransferWandViewIterator() iterates over two wand views in parallel and calls your transfer method for each scanline of the view.  The source pixel extent is not confined to the image canvas-- that is you can include negative offsets or widths or heights that exceed the image dimension. However, the destination wand view is confined to the image canvas-- that is no negative offsets or widths or heights that exceed the image dimension are permitted.</p>
481
482<p>The callback signature is:</p>
483
484<pre class="text">
485MagickBooleanType TransferImageViewMethod(const WandView *source,
486  WandView *destination,const ssize_t y,const int thread_id,
487  void *context)
488</pre>
489
490<p>Use this pragma if the view is not single threaded:</p>
491
492<pre class="text">
493    #pragma omp critical
494</pre>
495
496<p>to define a section of code in your callback transfer method that must be executed by a single thread at a time.</p>
497
498<p>The format of the TransferWandViewIterator method is:</p>
499
500<pre class="text">
501MagickBooleanType TransferWandViewIterator(WandView *source,
502  WandView *destination,TransferWandViewMethod transfer,void *context)
503</pre>
504
505<p>A description of each parameter follows:</p>
506
507<dd>
508</dd>
509
510<dd> </dd>
511<dl class="dl-horizontal">
512<dt>source</dt>
513<dd>the source wand view. </dd>
514
515<dd> </dd>
516<dt>destination</dt>
517<dd>the destination wand view. </dd>
518
519<dd> </dd>
520<dt>transfer</dt>
521<dd>the transfer callback method. </dd>
522
523<dd> </dd>
524<dt>context</dt>
525<dd>the user defined context. </dd>
526
527<dd>  </dd>
528</dl>
529<h2><a href="../../api/MagickWand/wand-view_8c.html" id="UpdateWandViewIterator">UpdateWandViewIterator</a></h2>
530
531<p>UpdateWandViewIterator() iterates over the wand view in parallel and calls your update method for each scanline of the view.  The pixel extent is confined to the image canvas-- that is no negative offsets or widths or heights that exceed the image dimension are permitted.  Updates to pixels in your callback are automagically synced back to the image.</p>
532
533<p>The callback signature is:</p>
534
535<pre class="text">
536MagickBooleanType UpdateImageViewMethod(WandView *source,const ssize_t y,
537  const int thread_id,void *context)
538</pre>
539
540<p>Use this pragma if the view is not single threaded:</p>
541
542<pre class="text">
543    #pragma omp critical
544</pre>
545
546<p>to define a section of code in your callback update method that must be executed by a single thread at a time.</p>
547
548<p>The format of the UpdateWandViewIterator method is:</p>
549
550<pre class="text">
551MagickBooleanType UpdateWandViewIterator(WandView *source,
552  UpdateWandViewMethod update,void *context)
553</pre>
554
555<p>A description of each parameter follows:</p>
556
557<dd>
558</dd>
559
560<dd> </dd>
561<dl class="dl-horizontal">
562<dt>source</dt>
563<dd>the source wand view. </dd>
564
565<dd> </dd>
566<dt>update</dt>
567<dd>the update callback method. </dd>
568
569<dd> </dd>
570<dt>context</dt>
571<dd>the user defined context. </dd>
572
573<dd>  </dd>
574</dl>
575</div>
576  </div>
577  </main><!-- /.container -->
578  <footer class="magick-footer">
579    <div class="container-fluid">
580      <a href="../../www/security-policy.html">Security</a> •
581      <a href="../../www/news.html">News</a>
582
583      <a href="wand-view.html#"><img class="d-inline" id="wand" alt="And Now a Touch of Magick" width="16" height="16" src="../../../images/wand.ico"/></a>
584
585      <a href="../../www/links.html">Related</a> •
586      <a href="../../www/sitemap.html">Sitemap</a>
587   <br/>
588     <a href="../../www/support.html">Sponsor</a> •
589     <a href="../../www/cite.html">Cite</a> •
590     <a href="http://pgp.mit.edu/pks/lookup?op=get&amp;search=0x89AB63D48277377A">Public Key</a> •
591     <a href="../../www/contact.html">Contact Us</a>
592   <br/>
593     <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> •
594     <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>
595    <br/>
596    <small>© 1999-2021 ImageMagick Studio LLC</small>
597    </div>
598  </footer>
599
600  <!-- Javascript assets -->
601  <script src="../../assets/magick.js" ></script>
602  </body>
603</html>
604