├── cache └── .gitkeep ├── .gitignore ├── robots.txt ├── class ├── index.php └── Mail.php ├── image ├── index.php ├── arc.png ├── atop.gif ├── logo.jpg ├── logo.png ├── navy.png ├── over.gif ├── rose.jpg ├── rose.png ├── star.gif ├── top.gif ├── wand.ico ├── wand.png ├── affine.png ├── black.png ├── button.gif ├── bw_erb.gif ├── donate.png ├── frame.jpg ├── label.gif ├── magick.png ├── right.gif ├── screen.png ├── script.png ├── smile.gif ├── sprite.jpg ├── tricks.png ├── wizard.jpg ├── wizard.png ├── annotate.png ├── configure.jpg ├── examples.jpg ├── granite.png ├── julia-set.png ├── leaderssl.png ├── logo-sm.png ├── montage.jpg ├── mountains.jpg ├── objects.gif ├── objects.jpg ├── objects.png ├── piechart.png ├── red-ball.png ├── rose-over.png ├── titlebar.jpg ├── travelsur.gif ├── ImageMagick.jpg ├── background.jpg ├── convex-hull.png ├── difference.png ├── georeviews.gif ├── icon-notice.gif ├── imade_art2.jpg ├── logo-sm-fx.png ├── magick-icon.png ├── reconstruct.jpg ├── red-circle.png ├── bluebells_lin.jpg ├── bluebells_log.jpg ├── futureweb_red.png ├── fuzzy-magick.png ├── gaussian-blur.png ├── logo-fullsize.png ├── logo-sm-flop.png ├── patterns │ ├── gray0.png │ ├── gray5.png │ ├── bricks.png │ ├── circles.png │ ├── gray10.png │ ├── gray100.png │ ├── gray15.png │ ├── gray20.png │ ├── gray25.png │ ├── gray30.png │ ├── gray35.png │ ├── gray40.png │ ├── gray45.png │ ├── gray50.png │ ├── gray55.png │ ├── gray60.png │ ├── gray65.png │ ├── gray70.png │ ├── gray75.png │ ├── gray80.png │ ├── gray85.png │ ├── gray90.png │ ├── gray95.png │ ├── left30.png │ ├── left45.png │ ├── right30.png │ ├── right45.png │ ├── crosshatch.png │ ├── fishscales.png │ ├── hexagons.png │ ├── horizontal.png │ ├── hs_cross.png │ ├── octagons.png │ ├── vertical.png │ ├── vertical2.png │ ├── vertical3.png │ ├── checkerboard.png │ ├── crosshatch30.png │ ├── crosshatch45.png │ ├── horizontal2.png │ ├── horizontal3.png │ ├── hs_bdiagonal.png │ ├── hs_diagcross.png │ ├── hs_fdiagonal.png │ ├── hs_vertical.png │ ├── leftshingle.png │ ├── rightshingle.png │ ├── verticalsaw.png │ ├── horizontalsaw.png │ ├── hs_horizontal.png │ ├── smallfishscales.png │ ├── verticalbricks.png │ ├── verticalleftshingle.png │ └── verticalrightshingle.png ├── red-highlight.png ├── rose-sigmoidal.png ├── bluebells_darker.jpg ├── convex-hull-barn.jpg ├── cylinder_shaded.png ├── definitive-guide.png ├── mountains-clahe.jpg ├── radial-gradient.png ├── white-highlight.png ├── bluebells_clipped.jpg ├── color-thresholding.jpg ├── convex-hull-blocks.png ├── cylinder_shaded_2.png ├── mountains-equalize.jpg ├── color-thresholding-gray.gif ├── color-thresholding-hsv.gif ├── color-thresholding-monet.jpg ├── color-thresholding-rgb.gif ├── color-thresholding-rgb.jpg ├── convex-hull-barn-closure.jpg ├── color-thresholding-hsv-rgb.gif ├── convex-hull-blocks-closure.png ├── gradients │ ├── linear_gradient.png │ ├── radial_gradient.png │ ├── linear_gradient_east.png │ ├── linear_gradient_default.png │ ├── radial_gradient_diagonal.png │ ├── radial_gradient_ellipse.png │ ├── radial_gradient_maximum.png │ ├── radial_gradient_minimum.png │ └── radial_gradient_ellipse_angle45.png ├── color-thresholding-monet-rgb.jpg ├── Makefile └── convex-hull.php ├── assets ├── index.php ├── magick-css.php ├── magick-js.php ├── cli-translate.min.js ├── magick-template.css ├── color-modes.js └── cli-translate.js ├── favicon.ico ├── script ├── notice.php ├── cite.php ├── sitemap.php ├── convex-hull.php ├── exception.php ├── gradient.php ├── jp2.php ├── links.php ├── support.php ├── architecture.php ├── compose.php ├── magick++.php ├── miff.php ├── webp.php ├── color-management.php ├── import.php ├── magick.php ├── animate.php ├── cipher.php ├── color-thresholding.php ├── compare.php ├── conjure.php ├── develop.php ├── display.php ├── examples.php ├── identify.php ├── magick-core.php ├── mogrify.php ├── montage.php ├── opencl.php ├── openmp.php ├── escape.php ├── fx.php ├── high-dynamic-range.php ├── motion-picture.php ├── multispectral-imagery.php ├── porting.php ├── search.php ├── distribute-pixel-cache.php ├── magick-script.php ├── vpat.php ├── changelog.php ├── clahe.php ├── connected-components.php ├── advanced-linux-installation.php ├── quantize.php ├── advanced-windows-installation.php ├── formats.php ├── color.php ├── install-source.php ├── export.php ├── download.php ├── privacy-policy.php ├── license.php ├── magick-vector-graphics.php ├── mirror.php ├── command-line-options.php ├── resources.php ├── command-line-tools.php ├── composite.php ├── perl-magick.php ├── magick-wand.php ├── command-line-processing.php ├── stream.php ├── magick-cache.php ├── security-policy.php ├── defines.php ├── history.php ├── convert.php ├── index.php └── session.php ├── Magick++ ├── Cache.png ├── Image.png ├── logo.png ├── Magick++.png ├── ImageMagick.png ├── right_triangle.png ├── Drawable_example_1.png ├── montage-sample-framed.jpg ├── thumbnail-anatomy-plain.jpg ├── thumbnail-sample-framed.jpg ├── thumbnail-sample-plain.jpg ├── thumbnail-anatomy-framed.jpg ├── tutorial │ ├── Magick++_tutorial.odt │ └── Magick++_tutorial.pdf ├── README.txt ├── Cache.fig ├── thumbnail-anatomy-plain.fig ├── ImageDesign.html ├── COPYING ├── thumbnail-anatomy-framed.fig ├── Future.html ├── FormatCharacters.html ├── CoderInfo.html ├── Image.fig ├── TypeMetric.html ├── Quantum.html └── Cache.svg ├── README.md ├── .well-known ├── .htaccess └── funding-manifest-urls.php ├── index.php ├── api ├── vision.php └── image-cache.php ├── include ├── Makefile ├── notice.php ├── search.php ├── changelog.php ├── privacy-policy.php ├── define.php ├── examples.php ├── cite.php ├── export.php ├── advanced-windows-installation.php ├── distribute-pixel-cache.php ├── vpat.php ├── high-dynamic-range.php ├── openmp.php ├── jp2.php ├── mirror.php ├── clahe.php ├── cipher.php └── opencl.php ├── support └── index.php ├── .editorconfig ├── docs └── AcceleratedTemplateMatchingUsingLocalStatisticsAndFourierTransforms.pdf ├── source ├── incantation.msl ├── type.xml ├── magick++.cpp ├── magic.xml ├── coder.xml ├── colors.xml ├── wand.c ├── core.c ├── log.xml ├── locale.xml ├── quantization-table.xml ├── sigmoidal-contrast.c ├── piechart.svg ├── wand │ └── sigmoidal-contrast.c ├── contrast.c ├── core │ └── sigmoidal-contrast.c ├── configure.xml ├── piechart.mvg └── type-solaris.xml ├── function ├── geometry.php └── option.php ├── .devcontainer ├── devcontainer.json └── Dockerfile ├── session.php ├── funding.json └── QuickStart.txt /cache/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | cache -------------------------------------------------------------------------------- /robots.txt: -------------------------------------------------------------------------------- 1 | user-agent: * 2 | allow: / 3 | crawl-delay: 2 -------------------------------------------------------------------------------- /class/index.php: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /image/index.php: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/index.php: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/favicon.ico -------------------------------------------------------------------------------- /image/arc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/arc.png -------------------------------------------------------------------------------- /image/atop.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/atop.gif -------------------------------------------------------------------------------- /image/logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/logo.jpg -------------------------------------------------------------------------------- /image/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/logo.png -------------------------------------------------------------------------------- /image/navy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/navy.png -------------------------------------------------------------------------------- /image/over.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/over.gif -------------------------------------------------------------------------------- /image/rose.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/rose.jpg -------------------------------------------------------------------------------- /image/rose.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/rose.png -------------------------------------------------------------------------------- /image/star.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/star.gif -------------------------------------------------------------------------------- /image/top.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/top.gif -------------------------------------------------------------------------------- /image/wand.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/wand.ico -------------------------------------------------------------------------------- /image/wand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/wand.png -------------------------------------------------------------------------------- /image/affine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/affine.png -------------------------------------------------------------------------------- /image/black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/black.png -------------------------------------------------------------------------------- /image/button.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/button.gif -------------------------------------------------------------------------------- /image/bw_erb.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/bw_erb.gif -------------------------------------------------------------------------------- /image/donate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/donate.png -------------------------------------------------------------------------------- /image/frame.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/frame.jpg -------------------------------------------------------------------------------- /image/label.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/label.gif -------------------------------------------------------------------------------- /image/magick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/magick.png -------------------------------------------------------------------------------- /image/right.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/right.gif -------------------------------------------------------------------------------- /image/screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/screen.png -------------------------------------------------------------------------------- /image/script.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/script.png -------------------------------------------------------------------------------- /image/smile.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/smile.gif -------------------------------------------------------------------------------- /image/sprite.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/sprite.jpg -------------------------------------------------------------------------------- /image/tricks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/tricks.png -------------------------------------------------------------------------------- /image/wizard.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/wizard.jpg -------------------------------------------------------------------------------- /image/wizard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/wizard.png -------------------------------------------------------------------------------- /script/notice.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /Magick++/Cache.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/Magick++/Cache.png -------------------------------------------------------------------------------- /Magick++/Image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/Magick++/Image.png -------------------------------------------------------------------------------- /Magick++/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/Magick++/logo.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ImageMagick Website 2 | ImageMagick version 7 website source, written in PHP. 3 | -------------------------------------------------------------------------------- /image/annotate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/annotate.png -------------------------------------------------------------------------------- /image/configure.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/configure.jpg -------------------------------------------------------------------------------- /image/examples.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/examples.jpg -------------------------------------------------------------------------------- /image/granite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/granite.png -------------------------------------------------------------------------------- /image/julia-set.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/julia-set.png -------------------------------------------------------------------------------- /image/leaderssl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/leaderssl.png -------------------------------------------------------------------------------- /image/logo-sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/logo-sm.png -------------------------------------------------------------------------------- /image/montage.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/montage.jpg -------------------------------------------------------------------------------- /image/mountains.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/mountains.jpg -------------------------------------------------------------------------------- /image/objects.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/objects.gif -------------------------------------------------------------------------------- /image/objects.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/objects.jpg -------------------------------------------------------------------------------- /image/objects.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/objects.png -------------------------------------------------------------------------------- /image/piechart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/piechart.png -------------------------------------------------------------------------------- /image/red-ball.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/red-ball.png -------------------------------------------------------------------------------- /image/rose-over.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/rose-over.png -------------------------------------------------------------------------------- /image/titlebar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/titlebar.jpg -------------------------------------------------------------------------------- /image/travelsur.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/travelsur.gif -------------------------------------------------------------------------------- /script/cite.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /script/sitemap.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /Magick++/Magick++.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/Magick++/Magick++.png -------------------------------------------------------------------------------- /image/ImageMagick.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/ImageMagick.jpg -------------------------------------------------------------------------------- /image/background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/background.jpg -------------------------------------------------------------------------------- /image/convex-hull.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/convex-hull.png -------------------------------------------------------------------------------- /image/difference.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/difference.png -------------------------------------------------------------------------------- /image/georeviews.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/georeviews.gif -------------------------------------------------------------------------------- /image/icon-notice.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/icon-notice.gif -------------------------------------------------------------------------------- /image/imade_art2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/imade_art2.jpg -------------------------------------------------------------------------------- /image/logo-sm-fx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/logo-sm-fx.png -------------------------------------------------------------------------------- /image/magick-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/magick-icon.png -------------------------------------------------------------------------------- /image/reconstruct.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/reconstruct.jpg -------------------------------------------------------------------------------- /image/red-circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/red-circle.png -------------------------------------------------------------------------------- /script/convex-hull.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /script/exception.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /script/gradient.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /script/jp2.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /script/links.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /script/support.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /Magick++/ImageMagick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/Magick++/ImageMagick.png -------------------------------------------------------------------------------- /image/bluebells_lin.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/bluebells_lin.jpg -------------------------------------------------------------------------------- /image/bluebells_log.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/bluebells_log.jpg -------------------------------------------------------------------------------- /image/futureweb_red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/futureweb_red.png -------------------------------------------------------------------------------- /image/fuzzy-magick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/fuzzy-magick.png -------------------------------------------------------------------------------- /image/gaussian-blur.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/gaussian-blur.png -------------------------------------------------------------------------------- /image/logo-fullsize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/logo-fullsize.png -------------------------------------------------------------------------------- /image/logo-sm-flop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/logo-sm-flop.png -------------------------------------------------------------------------------- /image/patterns/gray0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/gray0.png -------------------------------------------------------------------------------- /image/patterns/gray5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/gray5.png -------------------------------------------------------------------------------- /image/red-highlight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/red-highlight.png -------------------------------------------------------------------------------- /image/rose-sigmoidal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/rose-sigmoidal.png -------------------------------------------------------------------------------- /script/architecture.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /script/compose.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /script/magick++.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /script/miff.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /script/webp.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /.well-known/.htaccess: -------------------------------------------------------------------------------- 1 | RewriteEngine on 2 | RewriteRule ^funding-manifest-urls$ funding-manifest-urls.php [L] -------------------------------------------------------------------------------- /image/bluebells_darker.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/bluebells_darker.jpg -------------------------------------------------------------------------------- /image/convex-hull-barn.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/convex-hull-barn.jpg -------------------------------------------------------------------------------- /image/cylinder_shaded.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/cylinder_shaded.png -------------------------------------------------------------------------------- /image/definitive-guide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/definitive-guide.png -------------------------------------------------------------------------------- /image/mountains-clahe.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/mountains-clahe.jpg -------------------------------------------------------------------------------- /image/patterns/bricks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/bricks.png -------------------------------------------------------------------------------- /image/patterns/circles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/circles.png -------------------------------------------------------------------------------- /image/patterns/gray10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/gray10.png -------------------------------------------------------------------------------- /image/patterns/gray100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/gray100.png -------------------------------------------------------------------------------- /image/patterns/gray15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/gray15.png -------------------------------------------------------------------------------- /image/patterns/gray20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/gray20.png -------------------------------------------------------------------------------- /image/patterns/gray25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/gray25.png -------------------------------------------------------------------------------- /image/patterns/gray30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/gray30.png -------------------------------------------------------------------------------- /image/patterns/gray35.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/gray35.png -------------------------------------------------------------------------------- /image/patterns/gray40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/gray40.png -------------------------------------------------------------------------------- /image/patterns/gray45.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/gray45.png -------------------------------------------------------------------------------- /image/patterns/gray50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/gray50.png -------------------------------------------------------------------------------- /image/patterns/gray55.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/gray55.png -------------------------------------------------------------------------------- /image/patterns/gray60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/gray60.png -------------------------------------------------------------------------------- /image/patterns/gray65.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/gray65.png -------------------------------------------------------------------------------- /image/patterns/gray70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/gray70.png -------------------------------------------------------------------------------- /image/patterns/gray75.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/gray75.png -------------------------------------------------------------------------------- /image/patterns/gray80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/gray80.png -------------------------------------------------------------------------------- /image/patterns/gray85.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/gray85.png -------------------------------------------------------------------------------- /image/patterns/gray90.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/gray90.png -------------------------------------------------------------------------------- /image/patterns/gray95.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/gray95.png -------------------------------------------------------------------------------- /image/patterns/left30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/left30.png -------------------------------------------------------------------------------- /image/patterns/left45.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/left45.png -------------------------------------------------------------------------------- /image/patterns/right30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/right30.png -------------------------------------------------------------------------------- /image/patterns/right45.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/right45.png -------------------------------------------------------------------------------- /image/radial-gradient.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/radial-gradient.png -------------------------------------------------------------------------------- /image/white-highlight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/white-highlight.png -------------------------------------------------------------------------------- /index.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /script/color-management.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /script/import.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /script/magick.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /Magick++/right_triangle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/Magick++/right_triangle.png -------------------------------------------------------------------------------- /api/vision.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /image/bluebells_clipped.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/bluebells_clipped.jpg -------------------------------------------------------------------------------- /image/color-thresholding.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/color-thresholding.jpg -------------------------------------------------------------------------------- /image/convex-hull-blocks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/convex-hull-blocks.png -------------------------------------------------------------------------------- /image/cylinder_shaded_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/cylinder_shaded_2.png -------------------------------------------------------------------------------- /image/mountains-equalize.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/mountains-equalize.jpg -------------------------------------------------------------------------------- /image/patterns/crosshatch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/crosshatch.png -------------------------------------------------------------------------------- /image/patterns/fishscales.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/fishscales.png -------------------------------------------------------------------------------- /image/patterns/hexagons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/hexagons.png -------------------------------------------------------------------------------- /image/patterns/horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/horizontal.png -------------------------------------------------------------------------------- /image/patterns/hs_cross.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/hs_cross.png -------------------------------------------------------------------------------- /image/patterns/octagons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/octagons.png -------------------------------------------------------------------------------- /image/patterns/vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/vertical.png -------------------------------------------------------------------------------- /image/patterns/vertical2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/vertical2.png -------------------------------------------------------------------------------- /image/patterns/vertical3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/vertical3.png -------------------------------------------------------------------------------- /script/animate.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /script/cipher.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /script/color-thresholding.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /script/compare.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /script/conjure.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /script/develop.php: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /script/display.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /script/examples.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /script/identify.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /script/magick-core.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /script/mogrify.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /script/montage.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /script/opencl.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /script/openmp.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /Magick++/Drawable_example_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/Magick++/Drawable_example_1.png -------------------------------------------------------------------------------- /image/patterns/checkerboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/checkerboard.png -------------------------------------------------------------------------------- /image/patterns/crosshatch30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/crosshatch30.png -------------------------------------------------------------------------------- /image/patterns/crosshatch45.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/crosshatch45.png -------------------------------------------------------------------------------- /image/patterns/horizontal2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/horizontal2.png -------------------------------------------------------------------------------- /image/patterns/horizontal3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/horizontal3.png -------------------------------------------------------------------------------- /image/patterns/hs_bdiagonal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/hs_bdiagonal.png -------------------------------------------------------------------------------- /image/patterns/hs_diagcross.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/hs_diagcross.png -------------------------------------------------------------------------------- /image/patterns/hs_fdiagonal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/hs_fdiagonal.png -------------------------------------------------------------------------------- /image/patterns/hs_vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/hs_vertical.png -------------------------------------------------------------------------------- /image/patterns/leftshingle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/leftshingle.png -------------------------------------------------------------------------------- /image/patterns/rightshingle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/rightshingle.png -------------------------------------------------------------------------------- /image/patterns/verticalsaw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/verticalsaw.png -------------------------------------------------------------------------------- /script/escape.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /script/fx.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /script/high-dynamic-range.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /script/motion-picture.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /script/multispectral-imagery.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /script/porting.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /script/search.php: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /Magick++/montage-sample-framed.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/Magick++/montage-sample-framed.jpg -------------------------------------------------------------------------------- /api/image-cache.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /image/color-thresholding-gray.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/color-thresholding-gray.gif -------------------------------------------------------------------------------- /image/color-thresholding-hsv.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/color-thresholding-hsv.gif -------------------------------------------------------------------------------- /image/color-thresholding-monet.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/color-thresholding-monet.jpg -------------------------------------------------------------------------------- /image/color-thresholding-rgb.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/color-thresholding-rgb.gif -------------------------------------------------------------------------------- /image/color-thresholding-rgb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/color-thresholding-rgb.jpg -------------------------------------------------------------------------------- /image/convex-hull-barn-closure.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/convex-hull-barn-closure.jpg -------------------------------------------------------------------------------- /image/patterns/horizontalsaw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/horizontalsaw.png -------------------------------------------------------------------------------- /image/patterns/hs_horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/hs_horizontal.png -------------------------------------------------------------------------------- /image/patterns/smallfishscales.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/smallfishscales.png -------------------------------------------------------------------------------- /image/patterns/verticalbricks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/verticalbricks.png -------------------------------------------------------------------------------- /script/distribute-pixel-cache.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /script/magick-script.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /script/vpat.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /Magick++/thumbnail-anatomy-plain.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/Magick++/thumbnail-anatomy-plain.jpg -------------------------------------------------------------------------------- /Magick++/thumbnail-sample-framed.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/Magick++/thumbnail-sample-framed.jpg -------------------------------------------------------------------------------- /Magick++/thumbnail-sample-plain.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/Magick++/thumbnail-sample-plain.jpg -------------------------------------------------------------------------------- /image/color-thresholding-hsv-rgb.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/color-thresholding-hsv-rgb.gif -------------------------------------------------------------------------------- /image/convex-hull-blocks-closure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/convex-hull-blocks-closure.png -------------------------------------------------------------------------------- /image/gradients/linear_gradient.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/gradients/linear_gradient.png -------------------------------------------------------------------------------- /image/gradients/radial_gradient.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/gradients/radial_gradient.png -------------------------------------------------------------------------------- /script/changelog.php: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /script/clahe.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /script/connected-components.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /Magick++/thumbnail-anatomy-framed.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/Magick++/thumbnail-anatomy-framed.jpg -------------------------------------------------------------------------------- /Magick++/tutorial/Magick++_tutorial.odt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/Magick++/tutorial/Magick++_tutorial.odt -------------------------------------------------------------------------------- /Magick++/tutorial/Magick++_tutorial.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/Magick++/tutorial/Magick++_tutorial.pdf -------------------------------------------------------------------------------- /image/color-thresholding-monet-rgb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/color-thresholding-monet-rgb.jpg -------------------------------------------------------------------------------- /image/patterns/verticalleftshingle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/verticalleftshingle.png -------------------------------------------------------------------------------- /image/patterns/verticalrightshingle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/patterns/verticalrightshingle.png -------------------------------------------------------------------------------- /image/gradients/linear_gradient_east.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/gradients/linear_gradient_east.png -------------------------------------------------------------------------------- /script/advanced-linux-installation.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /script/quantize.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /.well-known/funding-manifest-urls.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /image/gradients/linear_gradient_default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/gradients/linear_gradient_default.png -------------------------------------------------------------------------------- /image/gradients/radial_gradient_diagonal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/gradients/radial_gradient_diagonal.png -------------------------------------------------------------------------------- /image/gradients/radial_gradient_ellipse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/gradients/radial_gradient_ellipse.png -------------------------------------------------------------------------------- /image/gradients/radial_gradient_maximum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/gradients/radial_gradient_maximum.png -------------------------------------------------------------------------------- /image/gradients/radial_gradient_minimum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/gradients/radial_gradient_minimum.png -------------------------------------------------------------------------------- /include/Makefile: -------------------------------------------------------------------------------- 1 | all: 2 | echo "Nothing to see here..." 3 | 4 | clean: 5 | /bin/rm -f ../cache/*.php 6 | /bin/rm -f ../cache/api/*.php 7 | -------------------------------------------------------------------------------- /script/advanced-windows-installation.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /support/index.php: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /image/gradients/radial_gradient_ellipse_angle45.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/image/gradients/radial_gradient_ellipse_angle45.png -------------------------------------------------------------------------------- /script/formats.php: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /script/color.php: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /script/install-source.php: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /script/export.php: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /script/download.php: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /script/privacy-policy.php: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*.{css,js,php}] 4 | 5 | indent_size = 2 6 | indent_style = space 7 | tab_width = 2 8 | 9 | insert_final_newline = true 10 | trim_trailing_whitespace = true 11 | -------------------------------------------------------------------------------- /docs/AcceleratedTemplateMatchingUsingLocalStatisticsAndFourierTransforms.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImageMagick/Website/HEAD/docs/AcceleratedTemplateMatchingUsingLocalStatisticsAndFourierTransforms.pdf -------------------------------------------------------------------------------- /script/license.php: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /script/magick-vector-graphics.php: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /script/mirror.php: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /script/command-line-options.php: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /script/resources.php: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /script/command-line-tools.php: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /script/composite.php: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /script/perl-magick.php: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /include/notice.php: -------------------------------------------------------------------------------- 1 | 7 |
8 |

There are no notices at this time.

9 |
10 | -------------------------------------------------------------------------------- /script/magick-wand.php: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /script/command-line-processing.php: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /script/stream.php: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /script/magick-cache.php: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /script/security-policy.php: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /script/defines.php: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /script/history.php: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /include/search.php: -------------------------------------------------------------------------------- 1 | 7 |
8 |

9 |
10 |
11 | -------------------------------------------------------------------------------- /script/convert.php: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /Magick++/README.txt: -------------------------------------------------------------------------------- 1 | This directory contains the Magick++ documentation. 2 | 3 | The file NEWS.html is generated from Magick++ source directory via 4 | txt2html -t 'Magick++ News' < NEWS > ../www/Magick++/NEWS.html 5 | using Seth Golub's fantastic txt2html translator. 6 | -------------------------------------------------------------------------------- /include/changelog.php: -------------------------------------------------------------------------------- 1 | 7 | 10 | -------------------------------------------------------------------------------- /image/Makefile: -------------------------------------------------------------------------------- 1 | all: 2 | ../montage -label "%f %wx%h" -geometry 160x160+10+10 -tile 2x2 \ 3 | -verbose -texture granite: -frame 20x20+5+5 -shadow -pen \#600 \ 4 | -font @ArtBrush.ttf \ 5 | dna.miff swan.miff aquarium.miff montage.miff 6 | 7 | clean: 8 | /bin/rm -f montage.miff 9 | -------------------------------------------------------------------------------- /script/index.php: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /source/incantation.msl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /function/geometry.php: -------------------------------------------------------------------------------- 1 | Image Geometry", 7 | $href)); 8 | } 9 | 10 | function seeGeometry() 11 | { 12 | printf("See %s for complete details about the geometry argument.", geometryUrl()); 13 | 14 | } 15 | 16 | ?> 17 | 18 | -------------------------------------------------------------------------------- /assets/magick-css.php: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /assets/magick-js.php: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /include/privacy-policy.php: -------------------------------------------------------------------------------- 1 | 7 |
8 |

As the organization overseeing the open-source ImageMagick software distribution, ImageMagick Studio LLC does not collect any personal identifier information (PII). In addition to the organization, the ImageMagick software distribution does not collect PII either.

9 | 10 |
11 | -------------------------------------------------------------------------------- /.devcontainer/devcontainer.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": { 3 | "dockerfile": "Dockerfile", 4 | "args": { 5 | "DISABLE_CACHE": "true" 6 | } 7 | }, 8 | "onCreateCommand": "sudo a2enmod rewrite && sudo apache2ctl start", 9 | "forwardPorts": [ 7070 ], 10 | "customizations": { 11 | "vscode": { 12 | "extensions": [ "editorconfig.editorconfig" ], 13 | "settings": { 14 | "extensions.ignoreRecommendations": true 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /include/define.php: -------------------------------------------------------------------------------- 1 | 7 | 17 | -------------------------------------------------------------------------------- /function/option.php: -------------------------------------------------------------------------------- 1 | %s%s", 14 | $href, $oref,$sign,$odisp); 15 | } 16 | 17 | function options() 18 | { 19 | // bull(); 20 | $numargs = func_num_args(); 21 | $arg_list = func_get_args(); 22 | for ($i = 0; $i < $numargs; $i++) { 23 | option($arg_list[$i]); 24 | echo(" "); 25 | if($i < $numargs - 1) 26 | bull(); 27 | } 28 | } 29 | 30 | ?> 31 | 32 | -------------------------------------------------------------------------------- /include/examples.php: -------------------------------------------------------------------------------- 1 | 7 |
8 |

These examples of ImageMagick usage illustrate what you can do with an image from the command line, a program interface, or script. You can generate this image yourself with this PerlMagick script, examples.pl.

9 | 10 |
    [ImageMagick Examples]
11 |
12 | -------------------------------------------------------------------------------- /source/type.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 11 | ]> 12 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /.devcontainer/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM mcr.microsoft.com/vscode/devcontainers/php 2 | 3 | ARG DISABLE_CACHE=true 4 | 5 | RUN sudo set -eux; \ 6 | sed -i 's/8080/7070/' /etc/apache2/ports.conf; \ 7 | sed -i 's/:80/:7070/' /etc/apache2/sites-available/000-default.conf; \ 8 | sed -i 's/\/var\/www\/html/\/workspaces\/Website/' /etc/apache2/sites-available/000-default.conf; \ 9 | sed -i 's/\/var\/www\//\/workspaces\/Website/' /etc/apache2/apache2.conf; \ 10 | echo "SetEnv MAGICK_DEVCONTAINER true" >> /etc/apache2/apache2.conf; \ 11 | echo "SetEnv MAGICK_DISABLE_CACHE ${DISABLE_CACHE}" >> /etc/apache2/apache2.conf; \ 12 | echo "" >> /etc/apache2/apache2.conf; \ 13 | echo " AllowOverride All" >> /etc/apache2/apache2.conf; \ 14 | echo "" >> /etc/apache2/apache2.conf; -------------------------------------------------------------------------------- /source/magick++.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | using namespace std; 5 | using namespace Magick; 6 | 7 | int main(int argc,char **argv) 8 | { 9 | InitializeMagick(*argv); 10 | 11 | // Construct the image object. Separating image construction from the 12 | // the read operation ensures that a failure to read the image file 13 | // doesn't render the image object useless. 14 | Image image; 15 | try { 16 | // Read a file into image object 17 | image.read( "logo:" ); 18 | 19 | // Crop the image to specified size (width, height, xOffset, yOffset) 20 | image.crop( Geometry(100,100, 100, 100) ); 21 | 22 | // Write the image to a file 23 | image.write( "logo.png" ); 24 | } 25 | catch( Exception &error_ ) 26 | { 27 | cout << "Caught exception: " << error_.what() << endl; 28 | return 1; 29 | } 30 | return 0; 31 | } 32 | -------------------------------------------------------------------------------- /source/magic.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | ]> 9 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /source/coder.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 8 | ]> 9 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /class/Mail.php: -------------------------------------------------------------------------------- 1 | authenticate,sha1($_SERVER['REMOTE_ADDR']),6) != 0) 14 | return; 15 | $message=stripslashes($this->message); 16 | $headers ='MIME-Version: 1.0' . "\r\n"; 17 | $headers.='Content-type: text/plain; charset=utf-8' . "\r\n"; 18 | $headers.='Content-Transfer-Encoding: base64' . "\r\n"; 19 | $headers.='Date: ' . date('r (T)') . "\r\n"; 20 | $headers.='Origin: ' . $_SERVER['REMOTE_ADDR'] . "\r\n"; 21 | $headers.='From: ' . $this->name . ' <' . $this->from .">\r\n"; 22 | $headers.='Reply-To: ' . $this->name . ' <' . $this->from .">\r\n"; 23 | $headers.='X-Mailer: PHP ' . phpversion(); 24 | mail($this->to,$this->subject,chunk_split(base64_encode($message),76, 25 | "\r\n"),$headers,'-f' . $this->to); 26 | } 27 | } 28 | ?> 29 | -------------------------------------------------------------------------------- /include/cite.php: -------------------------------------------------------------------------------- 1 | 7 |
8 |

Learn how to cite ImageMagick in your work. Choose from these citation formats:

9 | 10 |

Citation in APA style

11 |
ImageMagick Studio LLC. (2024). ImageMagick. Retrieved from https://imagemagick.org
12 | 13 |

Citation in Vancouver style

14 |
1. ImageMagick Studio LLC. ImageMagick [Internet]. 2024. Available from: https://imagemagick.org
15 | 16 |

Citation in Harvard style

17 |
ImageMagick Studio LLC, 2024. ImageMagick, Available at: https://imagemagick.org.
18 |

Citation in Bibtex format

19 |
@software{imagemagick,
20 |   author = {{ImageMagick Studio LLC}},
21 |   title = {ImageMagick},
22 |   url = {https://imagemagick.org},
23 |   version = {7.1.1},
24 |   date = {2024-01-04},
25 | }
26 | -------------------------------------------------------------------------------- /Magick++/Cache.fig: -------------------------------------------------------------------------------- 1 | #FIG 3.2 2 | Landscape 3 | Center 4 | Inches 5 | Letter 6 | 100.00 7 | Single 8 | 0 9 | 1200 2 10 | 1 3 0 3 4 4 0 0 20 0.000 1 0.0000 2715 3030 31 31 2715 3030 2745 3037 11 | 2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 2 12 | 1 1 1.00 60.00 120.00 13 | 1200 3300 1200 2100 14 | 2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 2 15 | 1 1 1.00 60.00 120.00 16 | 2925 1875 1500 1875 17 | 2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 2 18 | 1 1 1.00 60.00 120.00 19 | 3825 1875 4800 1875 20 | 2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 2 21 | 1 1 1.00 60.00 120.00 22 | 1200 3600 1200 4800 23 | 2 2 0 1 0 6 9 0 30 0.000 0 0 -1 0 0 5 24 | 2325 2700 4125 2700 4125 3825 2325 3825 2325 2700 25 | 2 2 0 1 0 2 10 0 30 0.000 0 0 7 0 0 5 26 | 1500 2100 4800 2100 4800 4800 1500 4800 1500 2100 27 | 2 2 0 1 7 7 11 0 20 0.000 0 0 -1 0 0 5 28 | 900 1500 5100 1500 5100 5100 900 5100 900 1500 29 | 4 1 0 0 0 16 12 0.0000 4 180 810 3375 1950 columns()\001 30 | 4 2 0 0 0 16 12 0.0000 4 180 510 1500 3525 rows()\001 31 | 4 0 0 0 0 16 12 0.0000 4 165 255 1575 2325 0,0\001 32 | 4 1 0 0 0 16 12 0.0000 4 180 795 3375 2625 columns_\001 33 | 4 1 0 0 0 16 12 0.0000 4 135 225 2325 2625 x,y\001 34 | 4 2 0 0 0 16 12 0.0000 4 135 495 2250 3300 rows_\001 35 | 4 0 0 0 0 16 12 0.0000 4 135 405 2730 3232 Pixel\001 36 | -------------------------------------------------------------------------------- /Magick++/thumbnail-anatomy-plain.fig: -------------------------------------------------------------------------------- 1 | #FIG 3.2 2 | Portrait 3 | Center 4 | Inches 5 | Letter 6 | 100.00 7 | Single 8 | -3 9 | 1200 2 10 | 2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 11 | 1 1 1.00 60.00 120.00 12 | 3825 1200 3600 1875 13 | 2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 14 | 1 1 1.00 60.00 120.00 15 | 4950 1200 4575 2100 16 | 2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 17 | 1 1 1.00 60.00 120.00 18 | 6000 3900 4950 4350 19 | 2 5 0 1 -1 -1 2 0 -1 0.000 0 0 -1 0 0 5 20 | 0 thumbnail-sample-plain.jpg 21 | 2700 1800 5850 1800 5850 4935 2700 4935 2700 1800 22 | 2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 23 | 1 1 1.00 60.00 120.00 24 | 6000 3075 5250 3375 25 | 2 2 0 1 0 7 10 0 -1 0.000 0 0 -1 0 0 5 26 | 1800 600 6900 600 6900 6000 1800 6000 1800 600 27 | 4 1 -1 0 0 16 14 0.0000 4 165 1875 4275 5250 PLAIN THUMBNAIL\001 28 | 4 1 -1 0 0 16 10 0.0000 4 120 480 3825 975 Thumb\001 29 | 4 1 -1 0 0 16 10 0.0000 4 120 465 3825 1155 Border\001 30 | 4 1 -1 0 0 16 10 0.0000 4 135 435 4950 1140 Image\001 31 | 4 1 -1 0 0 16 10 0.0000 4 120 480 4950 975 Thumb\001 32 | 4 1 -1 0 0 16 10 0.0000 4 120 570 6300 3180 Shadow\001 33 | 4 1 -1 0 0 16 10 0.0000 4 120 480 6300 3000 Thumb\001 34 | 4 1 -1 0 0 16 10 0.0000 4 120 390 6300 4005 Label\001 35 | 4 1 -1 0 0 16 10 0.0000 4 120 480 6300 3825 Thumb\001 36 | -------------------------------------------------------------------------------- /Magick++/ImageDesign.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Magick++ API: Design Principles 7 | 8 | 9 | 10 |
11 |
12 |

Magick::Image Data Structures

13 | The class Magick::Image is a simple handle which points to a reference-counted image representation. This allows multiple Magick::Image instances to share the same image and attributes. At the point in time that the image data, or image attributes are modified and the current reference count is greater than one, the image data and attributes are copied to create a new image with a reference count of one and the reference count on the old image is decremented. If the reference count on the old image becomes zero, then the associated reference and data are deleted. This strategy represents a simple (but effective) form of garbage collection 14 |

15 |
16 | 17 | 18 | -------------------------------------------------------------------------------- /Magick++/COPYING: -------------------------------------------------------------------------------- 1 | 2 | Copyright 1999, 2000, 2001 Bob Friesenhahn 3 | 4 | Permission is hereby granted, free of charge, to any person 5 | obtaining a copy of this software and associated documentation 6 | files ("Magick++"), to deal in Magick++ without restriction, 7 | including without limitation the rights to use, copy, modify, 8 | merge, publish, distribute, sublicense, and/or sell copies of 9 | Magick++, and to permit persons to whom the Magick++ is furnished 10 | to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be 13 | included in all copies or substantial portions of Magick++. 14 | 15 | The software is provided "as is", without warranty of any kind, 16 | express or implied, including but not limited to the warranties of 17 | merchantability, fitness for a particular purpose and 18 | noninfringement. In no event shall Bob Friesenhahn be liable for 19 | any claim, damages or other liability, whether in an action of 20 | contract, tort or otherwise, arising from, out of or in connection 21 | with Magick++ or the use or other dealings in Magick++. 22 | 23 | -------------------------------------------------------------------------------- /Magick++/thumbnail-anatomy-framed.fig: -------------------------------------------------------------------------------- 1 | #FIG 3.2 2 | Portrait 3 | Center 4 | Inches 5 | Letter 6 | 100.00 7 | Single 8 | 0 9 | 1200 2 10 | 2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 11 | 1 1 1.00 60.00 120.00 12 | 4800 1200 4350 2250 13 | 2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 14 | 1 1 1.00 60.00 120.00 15 | 5775 1200 5325 2025 16 | 2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 17 | 1 1 1.00 60.00 120.00 18 | 6525 4275 5250 4575 19 | 2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 20 | 1 1 1.00 60.00 120.00 21 | 3825 1200 3600 1875 22 | 2 5 0 1 -1 -1 2 0 -1 0.000 0 0 -1 0 0 5 23 | 0 thumbnail-sample-framed.jpg 24 | 2700 1800 6300 1800 6300 5385 2700 5385 2700 1800 25 | 2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 26 | 1 1 1.00 60.00 120.00 27 | 6525 3075 6150 3150 28 | 2 2 0 1 0 7 10 0 -1 0.000 0 0 -1 0 0 5 29 | 1650 600 7425 600 7425 6300 1650 6300 1650 600 30 | 4 1 -1 0 0 16 10 0.0000 4 120 480 5775 975 Thumb\001 31 | 4 1 -1 0 0 16 10 0.0000 4 105 435 5775 1155 Frame\001 32 | 4 1 -1 0 0 16 14 0.0000 4 165 2160 4500 5700 FRAMED THUMBNAIL\001 33 | 4 1 -1 0 0 16 10 0.0000 4 120 480 3825 975 Thumb\001 34 | 4 1 -1 0 0 16 10 0.0000 4 120 465 3825 1155 Border\001 35 | 4 1 -1 0 0 16 10 0.0000 4 135 435 4800 1140 Image\001 36 | 4 1 -1 0 0 16 10 0.0000 4 120 480 4800 975 Thumb\001 37 | 4 1 -1 0 0 16 10 0.0000 4 120 480 6900 3000 Thumb\001 38 | 4 1 -1 0 0 16 10 0.0000 4 120 570 6900 3180 Shadow\001 39 | 4 1 -1 0 0 16 10 0.0000 4 120 480 6900 4200 Thumb\001 40 | 4 1 -1 0 0 16 10 0.0000 4 120 390 6900 4380 Label\001 41 | -------------------------------------------------------------------------------- /source/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | ]> 9 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /source/wand.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | int main(int argc,char **argv) 6 | { 7 | #define ThrowWandException(wand) \ 8 | { \ 9 | char \ 10 | *description; \ 11 | \ 12 | ExceptionType \ 13 | severity; \ 14 | \ 15 | description=MagickGetException(wand,&severity); \ 16 | (void) fprintf(stderr,"%s %s %lu %s\n",GetMagickModule(),description); \ 17 | description=(char *) MagickRelinquishMemory(description); \ 18 | exit(-1); \ 19 | } 20 | 21 | MagickBooleanType 22 | status; 23 | 24 | MagickWand 25 | *magick_wand; 26 | 27 | if (argc != 3) 28 | { 29 | (void) fprintf(stdout,"Usage: %s image thumbnail\n",argv[0]); 30 | exit(0); 31 | } 32 | /* 33 | Read an image. 34 | */ 35 | MagickWandGenesis(); 36 | magick_wand=NewMagickWand(); 37 | status=MagickReadImage(magick_wand,argv[1]); 38 | if (status == MagickFalse) 39 | ThrowWandException(magick_wand); 40 | /* 41 | Turn the images into a thumbnail sequence. 42 | */ 43 | MagickResetIterator(magick_wand); 44 | while (MagickNextImage(magick_wand) != MagickFalse) 45 | MagickResizeImage(magick_wand,106,80,LanczosFilter); 46 | /* 47 | Write the image then destroy it. 48 | */ 49 | status=MagickWriteImages(magick_wand,argv[2],MagickTrue); 50 | if (status == MagickFalse) 51 | ThrowWandException(magick_wand); 52 | magick_wand=DestroyMagickWand(magick_wand); 53 | MagickWandTerminus(); 54 | return(0); 55 | } 56 | -------------------------------------------------------------------------------- /assets/cli-translate.min.js: -------------------------------------------------------------------------------- 1 | function addCliTranslations(){let e=null;function n(n){let t=document.createElement("select");t.className+="btn text-dark bg-light mx-4 cli-select-button",t.style.display="none",t.onchange=function(){!function(n){let t=n.value,l="Windows"==t?"inherit":"none",i="Linux"==t?"inherit":"none",o="Batch file"==t?"inherit":"none";for(let n of e.windows)n.style.display=l;for(let n of e.linux)n.style.display=i;for(let n of e.batch)n.style.display=o;for(let n of e.select)n.value=t}(this)},t.title="Change operating system syntax";let l=["Linux","Windows","Batch file"];for(let e of l){let n=document.createElement("option");n.text=e,t.appendChild(n)}return n.after(t),t}function t(e){let n=e.cloneNode(!0);n.classList.add("cli-windows"),n.style.display="none",function(e){new Map([[/\\\s*\n/gm,"^\n"],[/\s?\\(\(|\))\s?/gm," $1 "],[/\\!/gm,"!"],[/'/gm,'"'],[/\&|\||\<|\>/gm,"\\$&"]]).forEach((function(n,t){e.innerHTML=e.innerHTML.replaceAll(t,n)}))}(n);let t=n.cloneNode(!0);return t.classList.add("cli-batch"),t.style.display="none",function(e){new Map([[/%/gm,"%%"],[/^\s*#/gm,"::"]]).forEach((function(n,t){e.innerHTML=e.innerHTML.replaceAll(t,n)}))}(t),t.innerHTML==e.innerHTML?(n.remove(),[]):(e.classList.add("cli-linux"),e.after(n),n.after(t),[n,t])}e=function(){let e=document.querySelectorAll("pre.cli"),l=[],i=[],o=[],s=[];for(let a of e){let e=a.querySelector("samp");if(null!=e){let c=t(e);2==c.length&&(o.push(e),l.push(c[0]),i.push(c[1]),s.push(n(a)))}}return{windows:l,linux:o,batch:i,select:s}}();for(let n of e.select)n.style.display=null}setTimeout(addCliTranslations,0); 2 | -------------------------------------------------------------------------------- /session.php: -------------------------------------------------------------------------------- 1 | "; 42 | session_unset(); 43 | session_destroy(); 44 | ob_end_flush(); 45 | exit; 46 | } 47 | header("Location: script/index.php"); 48 | ob_end_flush(); 49 | exit; 50 | ?> 51 | -------------------------------------------------------------------------------- /source/core.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | 7 | int main(int argc,char **argv) 8 | { 9 | ExceptionInfo 10 | *exception; 11 | 12 | Image 13 | *image, 14 | *images, 15 | *resize_image, 16 | *thumbnails; 17 | 18 | ImageInfo 19 | *image_info; 20 | 21 | if (argc != 3) 22 | { 23 | (void) fprintf(stdout,"Usage: %s image thumbnail\n",argv[0]); 24 | exit(0); 25 | } 26 | /* 27 | Initialize the image info structure and read an image. 28 | */ 29 | MagickCoreGenesis(*argv,MagickTrue); 30 | exception=AcquireExceptionInfo(); 31 | image_info=CloneImageInfo((ImageInfo *) NULL); 32 | (void) strcpy(image_info->filename,argv[1]); 33 | images=ReadImage(image_info,exception); 34 | if (exception->severity != UndefinedException) 35 | CatchException(exception); 36 | if (images == (Image *) NULL) 37 | exit(1); 38 | /* 39 | Convert the image to a thumbnail. 40 | */ 41 | thumbnails=NewImageList(); 42 | while ((image=RemoveFirstImageFromList(&images)) != (Image *) NULL) 43 | { 44 | resize_image=ResizeImage(image,106,80,LanczosFilter,exception); 45 | if (resize_image == (Image *) NULL) 46 | MagickError(exception->severity,exception->reason,exception->description); 47 | (void) AppendImageToList(&thumbnails,resize_image); 48 | DestroyImage(image); 49 | } 50 | /* 51 | Write the image thumbnail. 52 | */ 53 | (void) strcpy(thumbnails->filename,argv[2]); 54 | WriteImage(image_info,thumbnails,exception); 55 | /* 56 | Destroy the image thumbnail and exit. 57 | */ 58 | thumbnails=DestroyImageList(thumbnails); 59 | image_info=DestroyImageInfo(image_info); 60 | exception=DestroyExceptionInfo(exception); 61 | MagickCoreTerminus(); 62 | return(0); 63 | } 64 | -------------------------------------------------------------------------------- /source/log.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | ]> 12 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | -------------------------------------------------------------------------------- /include/export.php: -------------------------------------------------------------------------------- 1 | 7 |
8 |

ImageMagick Studio LLC is a limited liability corporation based in the United States of America. All of our products are developed via online collaboration in public forums and distributed from a central server within the U.S. Therefore, U.S. export laws and regulations apply to our distributions and remain in force as products and technology are re-exported to different parties and places around the world. Information on export control classifications and associated restrictions may be required for exporting, re-exporting, record keeping, bundling/embedding of ImageMagick products, encryption reporting, and shipping documentation. More information on U.S. Export Regulations can be found at the U. S. Bureau of Industry and Security.

9 | 10 |

The ImageMagick software distribution is classified as ECCN 5D002. However, ImageMagick Studio LLC makes no warranty or representation that this classification is accurate, current, or complete. ImageMagick is exported under the TSU exception in EAR 740.13(e) which applies to software containing or designed for use with encryption software that is publicly available as open source. TSU further provides that Posting encryption source code and corresponding object code on the Internet (e.g., FTP or World Wide Web site) where it may be downloaded by anyone neither establishes "knowledge" of a prohibited export or reexport for purposes of this paragraph, nor triggers any "red flags" necessitating the affirmative duty to inquire[...]. It is your obligation as the exporter to comply with the current applicable requirements of United States export rules and regulations.

11 |
12 | -------------------------------------------------------------------------------- /include/advanced-windows-installation.php: -------------------------------------------------------------------------------- 1 | 7 |
8 |

This document describes the requirements and instructions to build ImageMagick for Windows on your own machine.

9 | 10 |

Requirements

11 |
    12 |
  • Visual Studio 2017 (or newer)
  • 13 |
  • Git for Windows
  • 14 |
  • AMD APP SDK (optional for OpenCL support)
  • 15 |
16 | 17 |

Install Visual Studio dependencies

18 |

To build ImageMagick with Visual Studio the following components should be installed:

19 | 20 |
    21 |
  • Desktop development with C++ (workload)
  • 22 |
  • Visual C++ ATL for x86 and x64
  • 23 |
  • Visual C++ MFC for x86 and x64
  • 24 |
  • Windows XP support for C++ (optional if the output needs to run on Windows XP)
  • 25 |
26 | 27 |

Naming of these components might differ between version of Visual Studio. The example above use the Visual Studio 2017 names.

28 | 29 |

Clone the dependencies

30 |

The ImageMagick library is built with a number of third party libraries. Run CloneRepositories.IM7.cmd to clone 31 | these libraries and the ImageMagick library. To clone the legacy ImageMagick 6 library and it's dependencies 32 | run CloneRepositories.IM6.cmd.

33 | 34 |

Build Configure.exe

35 |

One of the folders in this project is called Configure. This folder contains the solution file Configure.sln 36 | for the latest 2022 version of Visual Studio, and Configure.2017.sln for older versions. Open one of those and 37 | start a Release build of the project. This will create a file called Configure.exe in the folder. Running this 38 | program will start a Wizard that allows configuration of ImageMagick and its individual components.

39 | 40 |

Build ImageMagick

41 |

Depending on which options where chosen when running configure.exe one of the following solutions will be created in the root of the repository:

42 | 43 |
    44 |
  • IM7.Dynamic.sln (Dynamic Multi-threaded DLL runtimes)
  • 45 |
  • IM7.StaticDLL.sln (Static Multi-threaded DLL runtimes)
  • 46 |
  • IM7.Static.sln (Static Multi-threaded runtimes)
  • 47 |
48 | 49 |

Open the solution to start building ImageMagick. The binaries will be created in the Output\bin folder.

50 |
51 | -------------------------------------------------------------------------------- /funding.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://floss.fund/schema/v1.0.0/funding.schema.json#", 3 | "version": "v1.0.0", 4 | "entity": { 5 | "type": "organisation", 6 | "role": "maintainer", 7 | "name": "ImageMagick", 8 | "email": "funding@imagemagick.org", 9 | "description": "ImageMagick is a powerful, open-source software suite for creating, editing, converting, and manipulating images in over 200 formats. Ideal for web developers, graphic designers, and researchers, it offers versatile tools for image processing, including batch processing, format conversion, and complex image transformations.", 10 | "webpageUrl": { 11 | "url": "https://imagemagick.org" 12 | } 13 | }, 14 | "projects": [ 15 | { 16 | "guid": "imagemagick", 17 | "name": "ImageMagick", 18 | "description": "ImageMagick is a powerful, open-source software suite for creating, editing, converting, and manipulating images in over 200 formats. Ideal for web developers, graphic designers, and researchers, it offers versatile tools for image processing, including batch processing, format conversion, and complex image transformations.", 19 | "webpageUrl": { 20 | "url": "https://imagemagick.org" 21 | }, 22 | "repositoryUrl": { 23 | "url": "https://github.com/ImageMagick/ImageMagick", 24 | "wellKnown": "https://github.com/ImageMagick/ImageMagick/blob/main/.github/.well-known/funding-manifest-urls" 25 | }, 26 | "licenses": [ 27 | "Apache-2.0" 28 | ], 29 | "tags": [ 30 | "imagemagick", 31 | "image-processing", 32 | "image-manipulation", 33 | "image-conversion", 34 | "open-source-software", 35 | "mastering-digital-image-alchemy", 36 | "digital-image-editing", 37 | "command-line-image-tool" 38 | ] 39 | } 40 | ], 41 | "funding": { 42 | "channels": [ 43 | { 44 | "guid": "github-sponsors", 45 | "type": "payment-provider", 46 | "address": "https://github.com/sponsors/ImageMagick", 47 | "description": "Payments up to $12,000 USD per month can be made via Github Sponsors." 48 | } 49 | ], 50 | "plans": [ 51 | { 52 | "guid": "developer-time", 53 | "status": "active", 54 | "name": "Developer compensation", 55 | "description": "This compensates the developers working part-time on the project.", 56 | "amount": 0, 57 | "currency": "USD", 58 | "frequency": "monthly", 59 | "channels": [ "github-sponsors" ] 60 | } 61 | ] 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /assets/magick-template.css: -------------------------------------------------------------------------------- 1 | /* 2 | ImageMagick template. 3 | */ 4 | 5 | html { 6 | scroll-padding-top: 90px 7 | } 8 | 9 | body { 10 | padding-top: 3rem; 11 | padding-bottom: 3rem; 12 | color: #5a5a5a; 13 | } 14 | 15 | .container { 16 | max-width: 60rem; 17 | } 18 | 19 | a.anchor { 20 | position: relative; 21 | top: -3.5rem; 22 | } 23 | 24 | .pre-scrollable { 25 | max-height: 340px; 26 | overflow-y: scroll; 27 | } 28 | 29 | .cli-select-button{ 30 | font-size:.75rem; 31 | float:right; 32 | clear:both; 33 | position:relative; 34 | top:-18px; 35 | height:22px; 36 | padding:0px; 37 | } 38 | 39 | .bd-placeholder-img { 40 | font-size: 1.125rem; 41 | text-anchor: middle; 42 | -webkit-user-select: none; 43 | -moz-user-select: none; 44 | user-select: none; 45 | } 46 | 47 | @media (min-width: 768px) { 48 | .bd-placeholder-img-lg { 49 | font-size: 3.5rem; 50 | } 51 | } 52 | 53 | .b-example-divider { 54 | width: 100%; 55 | height: 3rem; 56 | background-color: rgba(0, 0, 0, .1); 57 | border: solid rgba(0, 0, 0, .15); 58 | border-width: 1px 0; 59 | box-shadow: inset 0 .5em 1.5em rgba(0, 0, 0, .1), inset 0 .125em .5em rgba(0, 0, 0, .15); 60 | } 61 | 62 | .b-example-vr { 63 | flex-shrink: 0; 64 | width: 1.5rem; 65 | height: 100vh; 66 | } 67 | 68 | .bi { 69 | vertical-align: -.125em; 70 | fill: currentColor; 71 | } 72 | 73 | .nav-scroller { 74 | position: relative; 75 | z-index: 2; 76 | height: 2.75rem; 77 | overflow-y: hidden; 78 | } 79 | 80 | .nav-scroller .nav { 81 | display: flex; 82 | flex-wrap: nowrap; 83 | padding-bottom: 1rem; 84 | margin-top: -1px; 85 | overflow-x: auto; 86 | text-align: center; 87 | white-space: nowrap; 88 | -webkit-overflow-scrolling: touch; 89 | } 90 | 91 | .btn-bd-primary { 92 | --bd-violet-bg: #712cf9; 93 | --bd-violet-rgb: 112.520718, 44.062154, 249.437846; 94 | --bs-btn-font-weight: 600; 95 | --bs-btn-color: var(--bs-white); 96 | --bs-btn-bg: var(--bd-violet-bg); 97 | --bs-btn-border-color: var(--bd-violet-bg); 98 | --bs-btn-hover-color: var(--bs-white); 99 | --bs-btn-hover-bg: #6528e0; 100 | --bs-btn-hover-border-color: #6528e0; 101 | --bs-btn-focus-shadow-rgb: var(--bd-violet-rgb); 102 | --bs-btn-active-color: var(--bs-btn-hover-color); 103 | --bs-btn-active-bg: #5a23c8; 104 | --bs-btn-active-border-color: #5a23c8; 105 | } 106 | 107 | .bd-mode-toggle { 108 | z-index: 1500; 109 | } 110 | 111 | .bd-mode-toggle .dropdown-menu .active .bi { 112 | display: block !important; 113 | } 114 | -------------------------------------------------------------------------------- /source/locale.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 8 | ]> 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /source/quantization-table.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | ]> 17 | 41 | 42 | 43 | Luma Quantization Table 44 | 45 | 16, 16, 16, 18, 25, 37, 56, 85, 46 | 16, 17, 20, 27, 34, 40, 53, 75, 47 | 16, 20, 24, 31, 43, 62, 91, 135, 48 | 18, 27, 31, 40, 53, 74, 106, 156, 49 | 25, 34, 43, 53, 69, 94, 131, 189, 50 | 37, 40, 62, 74, 94, 124, 169, 238, 51 | 56, 53, 91, 106, 131, 169, 226, 311, 52 | 85, 75, 135, 156, 189, 238, 311, 418 53 | 54 |
55 | 67 |
68 | 69 | -------------------------------------------------------------------------------- /include/distribute-pixel-cache.php: -------------------------------------------------------------------------------- 1 | 7 |
8 |

A distributed pixel cache is an extension of the traditional pixel cache available on a single host. The distributed pixel cache may span multiple servers so that it can grow in size and transactional capacity to support very large images or large image sequences. Start up the pixel cache server on one or more hosts. When you read or operate on an image and the local pixel cache resources are exhausted, ImageMagick contacts one or more of these remote pixel servers to store or retrieve pixels.

9 |

For really large images or large image sequences, or if there is limited resources on your host, you can utilize a distributed pixel cache on one or more remote hosts. To get started, first set your shared secret in the policy.xml security policy configuration file:

10 |

11 | <policy domain="cache" name="shared-secret" value="passphrase" stealth="true"/> 
12 | 13 |

Here we create two distributed pixel caches and utilize them from our desktop:

14 |
magick -distribute-cache 6668 &  # start on 192.168.100.50
15 | magick -distribute-cache 6668 &  # start on 192.168.100.51
16 | magick -limit memory 1GiB -limit map 2GiB -limit disk 4GiB \
17 |   -define registry:cache:hosts=192.168.100.50:6668,192.168.100.51:6668 \
18 |   myhugeimage.jpg -sharpen 5x2 myhugeimage.png 
19 |

For large image sequences, the servers are contacted in a round-robin fashion to distribute the load over multiple distributed pixel caches (assuming you have a host list rather than a single host). In our example, some modest resources are available on the desktop as defined by the -limit option. For smaller images, they are allocated on the desktop up to the specified limits.

20 |

Your image processing tasks are likely to perform slower when utilizing a distributed pixel cache due to shuffling pixels between the client and the server over a network. Algorithms that access virtual pixels (e.g. -sharpen) are noticeably slower, up to 3 times slower, than algorithms that only access authentic pixels (e.g. -negate) due to increased network traffic.

21 |

A client can only contact a compatible distributed pixel cache server. Compatibility requires the same ImageMagick library interface, quantum depth, HDRI status, OS word size, endianness, and passphrase. The distributed pixel cache checks these attributes and throws an exception if these requirements are not met.

22 |
23 | -------------------------------------------------------------------------------- /source/sigmoidal-contrast.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | 6 | static MagickBooleanType SigmoidalContrast(WandView *contrast_view, 7 | const ssize_t y,const int thread_id,void *context) 8 | { 9 | #define SigmoidalContrast(x) \ 10 | (QuantumRange*(1.0/(1+exp(10.0*(0.5-QuantumScale*x)))-0.0066928509)*1.0092503) 11 | 12 | PixelInfo 13 | pixel; 14 | 15 | PixelWand 16 | **pixels; 17 | 18 | RectangleInfo 19 | extent; 20 | 21 | register ssize_t 22 | x; 23 | 24 | extent=GetWandViewExtent(contrast_view); 25 | pixels=GetWandViewPixels(contrast_view); 26 | for (x=0; x < (ssize_t) extent.width; x++) 27 | { 28 | PixelGetMagickColor(pixels[x],&pixel); 29 | pixel.red=SigmoidalContrast(pixel.red); 30 | pixel.green=SigmoidalContrast(pixel.green); 31 | pixel.blue=SigmoidalContrast(pixel.blue); 32 | pixel.index=SigmoidalContrast(pixel.index); 33 | PixelSetPixelColor(pixels[x],&pixel); 34 | } 35 | return(MagickTrue); 36 | } 37 | 38 | int main(int argc,char **argv) 39 | { 40 | #define ThrowWandException(wand) \ 41 | { \ 42 | char \ 43 | *description; \ 44 | \ 45 | ExceptionType \ 46 | severity; \ 47 | \ 48 | description=MagickGetException(wand,&severity); \ 49 | (void) fprintf(stderr,"%s %s %lu %s\n",GetMagickModule(),description); \ 50 | description=(char *) MagickRelinquishMemory(description); \ 51 | exit(-1); \ 52 | } 53 | 54 | MagickBooleanType 55 | status; 56 | 57 | MagickWand 58 | *contrast_wand; 59 | 60 | PixelInfo 61 | pixel; 62 | 63 | WandView 64 | *contrast_view; 65 | 66 | if (argc != 3) 67 | { 68 | (void) fprintf(stdout,"Usage: %s image sigmoidal-image\n",argv[0]); 69 | exit(0); 70 | } 71 | /* 72 | Read an image. 73 | */ 74 | MagickWandGenesis(); 75 | contrast_wand=NewMagickWand(); 76 | status=MagickReadImage(contrast_wand,argv[1]); 77 | if (status == MagickFalse) 78 | ThrowWandException(contrast_wand); 79 | /* 80 | Sigmoidal non-linearity contrast control. 81 | */ 82 | contrast_view=NewWandView(contrast_wand); 83 | if (contrast_view == (WandView *) NULL) 84 | ThrowWandException(contrast_wand); 85 | status=UpdateWandViewIterator(contrast_view,SigmoidalContrast,(void *) NULL); 86 | if (status == MagickFalse) 87 | ThrowWandException(contrast_wand); 88 | contrast_view=DestroyWandView(contrast_view); 89 | /* 90 | Write the image then destroy it. 91 | */ 92 | status=MagickWriteImages(contrast_wand,argv[2],MagickTrue); 93 | if (status == MagickFalse) 94 | ThrowWandException(contrast_wand); 95 | contrast_wand=DestroyMagickWand(contrast_wand); 96 | MagickWandTerminus(); 97 | return(0); 98 | } 99 | -------------------------------------------------------------------------------- /assets/color-modes.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Color mode toggler for Bootstrap's docs (https://getbootstrap.com/) 3 | * Copyright 2011-2023 The Bootstrap Authors 4 | * Licensed under the Creative Commons Attribution 3.0 Unported License. 5 | */ 6 | 7 | (() => { 8 | const getStoredTheme = () => localStorage.getItem('theme') 9 | const setStoredTheme = theme => localStorage.setItem('theme', theme) 10 | 11 | const getPreferredTheme = () => { 12 | const storedTheme = getStoredTheme() 13 | if (storedTheme) { 14 | return storedTheme 15 | } 16 | 17 | return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light' 18 | } 19 | 20 | const setTheme = theme => { 21 | if (theme === 'auto') { 22 | document.documentElement.setAttribute('data-bs-theme', (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light')) 23 | } else { 24 | document.documentElement.setAttribute('data-bs-theme', theme) 25 | } 26 | } 27 | 28 | setTheme(getPreferredTheme()) 29 | 30 | const showActiveTheme = (theme, focus = false) => { 31 | const themeSwitcher = document.querySelector('#bd-theme') 32 | 33 | if (!themeSwitcher) { 34 | return 35 | } 36 | 37 | const themeSwitcherText = document.querySelector('#bd-theme-text') 38 | const activeThemeIcon = document.querySelector('.theme-icon-active use') 39 | const btnToActive = document.querySelector(`[data-bs-theme-value="${theme}"]`) 40 | const svgOfActiveBtn = btnToActive.querySelector('svg use').getAttribute('href') 41 | 42 | document.querySelectorAll('[data-bs-theme-value]').forEach(element => { 43 | element.classList.remove('active') 44 | element.setAttribute('aria-pressed', 'false') 45 | }) 46 | 47 | btnToActive.classList.add('active') 48 | btnToActive.setAttribute('aria-pressed', 'true') 49 | activeThemeIcon.setAttribute('href', svgOfActiveBtn) 50 | const themeSwitcherLabel = `${themeSwitcherText.textContent} (${btnToActive.dataset.bsThemeValue})` 51 | themeSwitcher.setAttribute('aria-label', themeSwitcherLabel) 52 | 53 | if (focus) { 54 | themeSwitcher.focus() 55 | } 56 | } 57 | 58 | window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => { 59 | const storedTheme = getStoredTheme() 60 | if (storedTheme !== 'light' && storedTheme !== 'dark') { 61 | setTheme(getPreferredTheme()) 62 | } 63 | }) 64 | 65 | window.addEventListener('DOMContentLoaded', () => { 66 | showActiveTheme(getPreferredTheme()) 67 | 68 | document.querySelectorAll('[data-bs-theme-value]') 69 | .forEach(toggle => { 70 | toggle.addEventListener('click', () => { 71 | const theme = toggle.getAttribute('data-bs-theme-value') 72 | setStoredTheme(theme) 73 | setTheme(theme) 74 | showActiveTheme(theme, true) 75 | }) 76 | }) 77 | }) 78 | })() 79 | -------------------------------------------------------------------------------- /Magick++/Future.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Magick++ API: Future 7 | 8 | 9 | 10 |
11 |

Future Plans

12 |

A challenging release plan has been developed for Magick++. What actually gets accomplished depends on the level of support from users and developers. Volunteers are needed. In particular, work on the CORBA/COM IDL-base API may proceed in parallel with other development. The following is the tentative development and release plan (step 1.0 is complete).

13 |

1.0 API for operating on individual images and STL containers of images

14 |
This version supports all ImageMagick API operations which operate on a single image as well as providing STL container support for operating on multiple images (on any STL compatible container which supports a forward input iterator).
15 |
STL is used as the framework in which to store images. Template functions (e.g. montage) are provided to build the image lists required by ImageMagick and then invoke the list-oriented ImageMagick API. STL is quite powerful yet easy to use. At this stage Magick++ has matched what is currently available/possible using the PerlMagick API due to leveraging the power of STL.
16 |

2.0 CORBA and/or COM IDL based client API with server implementation for executing image processing operations on a remote (or local) computer.

17 |
This version provides an IDL-based API. A C++ wrapper API compatible with that developed for release 2.0 is available for use by clients. Client wrappers may also be developed for other languages (e.g. Java). COM and CORBA servers are provided which are implemented in terms of the Magick++ API in order to satisfy client requests (which may run a different operating system than the server).
18 |

3.0 Integration of IDL-based API with an existing open source work-queing system in order to load-share image processing tasks and the image frame and file level across a large number of machines.

19 |
This version is the culmination of the effort. By intelligently spreading work over many machines, the performance of ImageMagick is magnified. In order for this to be a success algorithms for efficient transfer of image data must be developed. Algorithms that take into account processor afinity and the CPU vs I/O tradeoff for the task to be performed must be developed. At this point in time, the queuing system to be employed has not been identified.
20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /source/piechart.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | Average: 20.0 8 | 9 | MagickWand for PHP 10 | (10.0%) 11 | 12 | 13 | MagickCore 14 | (29.0%) 15 | 16 | 17 | MagickWand 19 | (22.9%) 20 | 21 | 22 | JMagick 23 | (10.6%) 24 | 25 | 26 | Magick++ 27 | (27.5%) 28 | 29 | ImageMagick 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /image/convex-hull.php: -------------------------------------------------------------------------------- 1 |

The convex hull is the is the smallest area convex polygon containing the set of points inside it. The convex hull may be visualized as the shape enclosed by a rubber band stretched around the set of points.

2 | 3 |

The convex-hull string format returns a list of x,y coordinates of the vertices of the convex-hull polygon containing all the non-black pixels within it.

4 | 5 |
     6 | magick [-fuzz XXX%] [-define convex-hull:background-color] -format "%[convex-hull]" info:
     7 | 
8 | 9 |

where the string format is sensitive to an optional -fuzz value and to an optional background color specified by the define. The command above will find the background color automatically according to the fuzz value unless the background color is defined. The fuzz value defaults to 0 when not specified.

10 | 11 |

For example, consider the following white rectangle on a black background:

12 | 13 |
    [Convex Hull]
14 | 15 |

The convex hull set of points may be computed as:

16 | 17 |
    magick rect.png -format "%[convex-hull]" info:
    18 | 190,121 193,122 281,154 377,189 378,190 377,193 345,281 310,377 309,378 306,377 218,345 122,310 121,309 122,306 154,218 189,122 190,121
    19 | 
20 | 21 |

The convex hull may also be drawn as a polygon (filled or unfilled) using -draw as follows:

22 | 23 |
    magick rect.png -set option:hull "%[convex-hull]" -fill none -stroke red -strokewidth 1 -draw "polygon %[hull]" blocks_hull.png
24 | 25 |

Here is an example using a non-convex shaped image on a black background:

26 | 27 |
    [Convex Hull Blocks]
28 | 29 |
    magick blocks_black.png -set option:hull "%[convex-hull]" -fill none -stroke red -strokewidth 1 -draw "polygon %[hull]" blocks_hull.png
30 | 31 |
    [Convex Hull Blocks Closure]
32 | 33 |

Finally, here is an example with a non-constant, non-black background using -fuzz to determine the background color:

34 | 35 |
    [Convex Hull Barn]
36 | 37 |
    magick barn_rot20.png -fuzz 30% -set option:hull "%[convex-hull]" -fill none -stroke red -strokewidth 1 -draw "polygon %[hull]" barn_rot20_hull.png
38 | 39 |
    [Convex Hull Barn Closure]
40 | -------------------------------------------------------------------------------- /source/wand/sigmoidal-contrast.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | 6 | static MagickBooleanType SigmoidalContrast(WandView *contrast_view, 7 | const ssize_t y,const int id,void *context) 8 | { 9 | #define QuantumScale ((MagickRealType) 1.0/(MagickRealType) QuantumRange) 10 | #define SigmoidalContrast(x) \ 11 | (QuantumRange*(1.0/(1+exp(10.0*(0.5-QuantumScale*x)))-0.0066928509)*1.0092503) 12 | 13 | RectangleInfo 14 | extent; 15 | 16 | MagickPixelPacket 17 | pixel; 18 | 19 | PixelWand 20 | **pixels; 21 | 22 | register ssize_t 23 | x; 24 | 25 | extent=GetWandViewExtent(contrast_view); 26 | pixels=GetWandViewPixels(contrast_view); 27 | for (x=0; x < (ssize_t) (extent.width-extent.x); x++) 28 | { 29 | PixelGetMagickColor(pixels[x],&pixel); 30 | pixel.red=SigmoidalContrast(pixel.red); 31 | pixel.green=SigmoidalContrast(pixel.green); 32 | pixel.blue=SigmoidalContrast(pixel.blue); 33 | pixel.index=SigmoidalContrast(pixel.index); 34 | PixelSetMagickColor(pixels[x],&pixel); 35 | } 36 | return(MagickTrue); 37 | } 38 | 39 | int main(int argc,char **argv) 40 | { 41 | #define ThrowViewException(view) \ 42 | { \ 43 | description=GetWandViewException(view,&severity); \ 44 | (void) fprintf(stderr,"%s %s %lu %s\n",GetMagickModule(),description); \ 45 | description=(char *) MagickRelinquishMemory(description); \ 46 | exit(-1); \ 47 | } 48 | #define ThrowWandException(wand) \ 49 | { \ 50 | description=MagickGetException(wand,&severity); \ 51 | (void) fprintf(stderr,"%s %s %lu %s\n",GetMagickModule(),description); \ 52 | description=(char *) MagickRelinquishMemory(description); \ 53 | exit(-1); \ 54 | } 55 | 56 | char 57 | *description; 58 | 59 | ExceptionType 60 | severity; 61 | 62 | MagickBooleanType 63 | status; 64 | 65 | MagickPixelPacket 66 | pixel; 67 | 68 | MagickWand 69 | *contrast_wand; 70 | 71 | WandView 72 | *contrast_view; 73 | 74 | if (argc != 3) 75 | { 76 | (void) fprintf(stdout,"Usage: %s image sigmoidal-image\n",argv[0]); 77 | exit(0); 78 | } 79 | /* 80 | Read an image. 81 | */ 82 | MagickWandGenesis(); 83 | contrast_wand=NewMagickWand(); 84 | status=MagickReadImage(contrast_wand,argv[1]); 85 | if (status == MagickFalse) 86 | ThrowWandException(contrast_wand); 87 | /* 88 | Sigmoidal non-linearity contrast control. 89 | */ 90 | contrast_view=NewWandView(contrast_wand); 91 | if (contrast_view == (WandView *) NULL) 92 | ThrowWandException(contrast_wand); 93 | status=UpdateWandViewIterator(contrast_view,SigmoidalContrast,(void *) NULL); 94 | if (status == MagickFalse) 95 | ThrowWandException(contrast_wand); 96 | contrast_view=DestroyWandView(contrast_view); 97 | /* 98 | Write the image then destroy it. 99 | */ 100 | status=MagickWriteImages(contrast_wand,argv[2],MagickTrue); 101 | if (status == MagickFalse) 102 | ThrowWandException(contrast_wand); 103 | contrast_wand=DestroyMagickWand(contrast_wand); 104 | MagickWandTerminus(); 105 | return(0); 106 | } 107 | -------------------------------------------------------------------------------- /Magick++/FormatCharacters.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Magick++ API: Annotating an Image 7 | 8 | 9 | 10 |
11 |

Special Format Characters

12 |

The Magick::Image methods annotate, draw, label, and the template function montageImages support special format characters contained in the argument text. These format characters work similar to C's printf. Whenever a format character appears in the text, it is replaced with the equivalent attribute text. The available format characters are shown in the following table.

13 |
14 |

Format Characters

15 |
16 | 17 | 18 | 19 | 20 | 22 | 24 | 25 | 27 | 29 | 30 | 32 | 34 | 35 | 37 | 39 | 40 | 42 | 44 | 45 | 47 | 49 | 50 | 52 | 54 | 55 | 57 | 59 | 60 | 62 | 64 | 65 | 67 | 69 | 70 | 72 | 74 | 75 | 77 | 79 | 80 | 82 | 84 | 85 | 87 | 89 | 90 | 92 |
21 |

Format Character

23 |

Description

26 |

%b

28 |

file size

31 |

%d

33 |

directory

36 |

%e

38 |

filename extension

41 |

%f

43 |

filename

46 |

%h

48 |

height

51 |

%m

53 |

magick (e.g GIF)

56 |

%p

58 |

page number

61 |

%s

63 |

scene number

66 |

%t

68 |

top of filename

71 |

%w

73 |

width

76 |

%x

78 |

x resolution

81 |

%y

83 |

y resolution

86 |

\n

88 |

newline

91 |

\r

93 |

carriage return

94 |
95 | 96 | 97 | -------------------------------------------------------------------------------- /source/contrast.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | 6 | int main(int argc,char **argv) 7 | { 8 | #define SigmoidalContrast(x) \ 9 | (QuantumRange*(1.0/(1+exp(10.0*(0.5-QuantumScale*x)))-0.0066928509)*1.0092503) 10 | #define ThrowWandException(wand) \ 11 | { \ 12 | char \ 13 | *description; \ 14 | \ 15 | ExceptionType \ 16 | severity; \ 17 | \ 18 | description=MagickGetException(wand,&severity); \ 19 | (void) fprintf(stderr,"%s %s %lu %s\n",GetMagickModule(),description); \ 20 | description=(char *) MagickRelinquishMemory(description); \ 21 | exit(-1); \ 22 | } 23 | 24 | MagickBooleanType 25 | status; 26 | 27 | MagickWand 28 | *contrast_wand, 29 | *image_wand; 30 | 31 | PixelInfo 32 | pixel; 33 | 34 | PixelIterator 35 | *contrast_iterator, 36 | *iterator; 37 | 38 | PixelWand 39 | **contrast_pixels, 40 | **pixels; 41 | 42 | register ssize_t 43 | x; 44 | 45 | size_t 46 | width; 47 | 48 | ssize_t 49 | y; 50 | 51 | if (argc != 3) 52 | { 53 | (void) fprintf(stdout,"Usage: %s image sigmoidal-image\n",argv[0]); 54 | exit(0); 55 | } 56 | /* 57 | Read an image. 58 | */ 59 | MagickWandGenesis(); 60 | image_wand=NewMagickWand(); 61 | status=MagickReadImage(image_wand,argv[1]); 62 | if (status == MagickFalse) 63 | ThrowWandException(image_wand); 64 | contrast_wand=CloneMagickWand(image_wand); 65 | /* 66 | Sigmoidal non-linearity contrast control. 67 | */ 68 | iterator=NewPixelIterator(image_wand); 69 | contrast_iterator=NewPixelIterator(contrast_wand); 70 | if ((iterator == (PixelIterator *) NULL) || 71 | (contrast_iterator == (PixelIterator *) NULL)) 72 | ThrowWandException(image_wand); 73 | for (y=0; y < (ssize_t) MagickGetImageHeight(image_wand); y++) 74 | { 75 | pixels=PixelGetNextIteratorRow(iterator,&width); 76 | contrast_pixels=PixelGetNextIteratorRow(contrast_iterator,&width); 77 | if ((pixels == (PixelWand **) NULL) || 78 | (contrast_pixels == (PixelWand **) NULL)) 79 | break; 80 | for (x=0; x < (ssize_t) width; x++) 81 | { 82 | PixelGetMagickColor(pixels[x],&pixel); 83 | pixel.red=SigmoidalContrast(pixel.red); 84 | pixel.green=SigmoidalContrast(pixel.green); 85 | pixel.blue=SigmoidalContrast(pixel.blue); 86 | pixel.index=SigmoidalContrast(pixel.index); 87 | PixelSetPixelColor(contrast_pixels[x],&pixel); 88 | } 89 | (void) PixelSyncIterator(contrast_iterator); 90 | } 91 | if (y < (ssize_t) MagickGetImageHeight(image_wand)) 92 | ThrowWandException(image_wand); 93 | contrast_iterator=DestroyPixelIterator(contrast_iterator); 94 | iterator=DestroyPixelIterator(iterator); 95 | image_wand=DestroyMagickWand(image_wand); 96 | /* 97 | Write the image then destroy it. 98 | */ 99 | status=MagickWriteImages(contrast_wand,argv[2],MagickTrue); 100 | if (status == MagickFalse) 101 | ThrowWandException(image_wand); 102 | contrast_wand=DestroyMagickWand(contrast_wand); 103 | MagickWandTerminus(); 104 | return(0); 105 | } 106 | -------------------------------------------------------------------------------- /include/vpat.php: -------------------------------------------------------------------------------- 1 | 7 |
8 | 9 |

The Voluntary Product Accessibility Template (VPAT) is a document that describes how an information technology (IT) product, such as software, hardware, or web-based applications, meets the accessibility standards defined by Section 508 of the Rehabilitation Act. This VPAT describes the accessibility features of the ImageMagick open-source project.

10 |
    11 |
  • Product Name: ImageMagick
  • 12 |
  • Version: 7.1.0
  • 13 |
14 | 15 |
Evaluation Methods Used
16 |

This VPAT is based on a review of the ImageMagick project documentation, including the project website and the software documentation.

17 | 18 |
Section 1194.21 - Software Applications and Operating Systems
19 | 20 |

ImageMagick is a command-line utility for creating, editing, and converting images. The software can be used with screen readers and other assistive technologies to access the command-line interface. However, the interface is not optimized for use with assistive technologies, and some users may find it difficult to use without significant customization.

21 | 22 |
Section 1194.22 - Web-based Intranet and Internet Information and Applications
23 | 24 |

ImageMagick does not have any web-based features, so this section does not apply.

25 | 26 |
Section 1194.23 - Telecommunications Products
27 | 28 |

ImageMagick does not include any telecommunications features, so this section does not apply.

29 | 30 |
Section 1194.24 - Video and Multimedia Products
31 | 32 |

ImageMagick does not include any video or multimedia features, so this section does not apply.

33 | 34 |

Section 1194.25 - Self-Contained, Closed Products

35 | 36 |

ImageMagick is an open-source command-line utility and does not meet the requirements of this section.

37 | 38 |
Section 1194.26 - Desktop and Portable Computers
39 | 40 |

ImageMagick is a command-line utility and does not include a graphical user interface (GUI) that could be used with assistive technologies. This section does not apply.

41 | 42 |
Section 1194.31 - Functional Performance Criteria
43 | 44 |

ImageMagick does not include any functional performance criteria.

45 | 46 |
Section 1194.41 - Information, Documentation, and Support
47 | 48 |

The ImageMagick project provides online documentation in HTML format, which is accessible using screen readers and other assistive technologies. The documentation includes installation instructions, command-line reference, and other resources. However, some of the documentation may be technical and difficult for non-technical users to understand. The project does not offer any support services for users with disabilities.

49 | 50 |
Conclusion
51 | 52 |

ImageMagick is an open-source command-line utility that provides basic accessibility features for users who rely on assistive technologies. However, the software is not optimized for use with assistive technologies and may require significant customization to be accessible to all users. The project provides accessible online documentation, but may not be suitable for non-technical users.

53 | 54 | 55 |
56 | -------------------------------------------------------------------------------- /include/high-dynamic-range.php: -------------------------------------------------------------------------------- 1 | 7 |
8 |

High dynamic-range imaging (HDRI) permits a far greater dynamic range of exposures (i.e. a large difference between light and dark areas) than standard digital imaging techniques. HDRI accurately represents the wide range of intensity levels found in real scenes ranging from the brightest direct sunlight to the deepest darkest shadows. The HDR imaging approach includes:

9 | 10 |
    11 |
  • render/capture floating-point color space
  • 12 |
  • encompass the entire perceivable gamut (extend values outside [0,1] range)
  • 13 |
  • post-process in extended color space
  • 14 |
  • apply tone-mapping for specific display
  • 15 |
16 | 17 |

ImageMagick supports the Jzazbc colorspace, for applications that require wide color gamut and high dynamic range.

18 | 19 |

Enabling HDRI in ImageMagick

20 | 21 |

By default, image pixels in ImageMagick version 7 are stored in a floating-point representation that range from 0 to the quantum depth, which is typically 16-bits (Q16). With HDRI enabled, the pixels can include negative values as well as values that exceed the quantum depth. A majority of digital image formats do not support HDRI, and for those images any pixels outside the quantum range are clamped before they are stored.

22 | 23 |

The most promising HDR image format is EXR. You must have the OpenEXR delegate library installed to read or write this format. Other HDR formats include TIFF 48-bit integer and 96-bit float formats, HDR, PFM, and ImageMagick's own MIFF format.

24 | 25 |

To disable the HDRI version of ImageMagick, use this Linux/Linux command:

26 | 27 |
./configure --disable-hdri
28 | 
29 | 30 |

Under Windows, follow the instructions (straightforward for a non-programmer) in a one hour process to build and configure your own executables: Install from Windows Source.

31 | 32 |

To verify HDRI is properly configured, look for "HDRI" as a feature:

33 | 34 |
magick identify -version
35 | Features: HDRI
36 | 
37 | 38 |

With HDRI enabled, you can now create images with a much wider dynamic range, allowing for more vivid colors and better contrast. It ensures that HDR content can be displayed accurately on compatible devices while maintaining backward compatibility with SDR displays. In this example, you can store the difference between a standard dynamic range (SDR) image and its high dynamic range (HDR) counterpart. Essentially, a gain map captures the additional brightness and color information that HDR provides over SDR:

39 | 40 |
magick -define uhdr:hdr-color-gamut=bt709 -define uhdr:hdr-color-transfer=hlg \
41 |   \( img_sdr.tif -depth 8 \)  \( img_hdr.tif -depth 16 \) uhdr:ultrahdr.jpg
42 | 
43 |
44 | -------------------------------------------------------------------------------- /include/openmp.php: -------------------------------------------------------------------------------- 1 | 7 |
8 |

Many of ImageMagick's internal algorithms are threaded to take advantage of speed-ups offered by the multicore processor chips and OpenMP. OpenMP, is an API specification for parallel programming. If your compiler supports OpenMP (e.g. gcc, Visual Studio 2005) directives, ImageMagick automatically includes support. To verify, look for the OpenMP feature of ImageMagick with this command:

9 |
$ magick identify -version
10 | Version: ImageMagick 7.0.10-50 2021-01-04 Q16 https://imagemagick.org
11 | Copyright: © 1999-2021 ImageMagick Studio LLC
12 | Features: OpenMP(4.5)
13 |

With OpenMP enabled, most ImageMagick algorithms execute on all the cores on your system in parallel. ImageMagick typically divides the work so that each thread processes 64 rows of pixels. As rows are completed, OpenMP assigns more chunks of pixel rows to each thread until the algorithm completes. For example, if you have a quad-core system, and attempt to resize an image, the resizing takes place on 4 cores (8 if hyperthreading is enabled).

14 |

You can further increase performance by reducing lock contention with the tcmalloc memory allocation library. To enable, add --with-tcmalloc to the configure command-line when you build ImageMagick.

15 |

The Perils of Parallel Execution

16 |

It can be difficult to predict behavior in a parallel environment. Performance might depend on a number of factors including the compiler, the version of the OpenMP library, the processor type, the number of cores, the amount of memory, whether hyperthreading is enabled, the mix of applications that are executing concurrently with ImageMagick, or the particular image-processing algorithm you utilize. The only way to be certain of the optimal performance, in terms of the number of threads, is to benchmark. ImageMagick includes progressive threading when benchmarking a command and returns the elapsed time and efficiency for one or more threads. This can help you identify how many threads are the most efficient in your environment. Here is an example benchmark for threads 1-8:

17 | 18 |
$ magick -bench 40 model.png -sharpen 0x1 null:
19 | Performance[1]: 40i 0.712ips 1.000e 14.000u 0:14.040
20 | Performance[2]: 40i 1.362ips 0.657e 14.550u 0:07.340
21 | Performance[3]: 40i 2.033ips 0.741e 14.530u 0:04.920
22 | Performance[4]: 40i 2.667ips 0.789e 14.590u 0:03.750
23 | Performance[5]: 40i 3.236ips 0.820e 14.970u 0:03.090
24 | Performance[6]: 40i 3.802ips 0.842e 15.280u 0:02.630
25 | Performance[7]: 40i 4.274ips 0.857e 15.540u 0:02.340
26 | Performance[8]: 40i 4.831ips 0.872e 15.680u 0:02.070
27 |

Better performance correlates with higher values of IPS (iterations-per-second). In our example, 8 cores are optimal. However, in certain cases it might be optimal to set the number of threads to 1 (e.g. -limit thread 1) or to disable OpenMP completely. To disable this feature, add --disable-openmp to your configure script command line then rebuild and re-install ImageMagick.

28 |
29 | -------------------------------------------------------------------------------- /include/jp2.php: -------------------------------------------------------------------------------- 1 | 7 |
8 | 9 |

ImageMagick's JPEG-2000 image formats, JP2 and JPC, accept a plethora of encoding options as detailed below. As an example, suppose you are interested in these options:

10 | 11 |
    12 |
  • code blocks are 64 samples in width and 32 samples in height
  • 13 |
  • no multicomponent transform
  • 14 |
  • 4 resolution levels for each component
  • 15 |
  • compression is lossy at 64:1
  • 16 |
17 | 18 |

Use this command to convert a JPEG-2000 image to the PNG image format:

19 | 20 |
magick wizard.jp2 wizard.png 
21 | 22 |

Let's convert a JPEG image to a lossless JPEG-2000 image:

23 | 24 |
magick wizard.jpg -quality 0 wizard.jp2 
25 | 26 |

Here we extract an area from the image:

27 | 28 |
magick 'wizard.jp2[640x480+0+0]' wizard.png 
29 | 30 |

Extract a particular tile from the image:

31 | 32 |
magick 'wizard.jp2[2]' wizard.png 
33 | 34 |

Specify a subsampling factor:

35 | 36 |
magick wizard.png -colorspace YUV -sampling-factor 2:2 wizard.jp2 
37 | 38 |

Save a tiled JPEG-2000 image:

39 | 40 |
magick wizard.png 'wizard.png[512x512]' 
41 | 42 |

Write a digital Cinema 4K profile compliant codestream:

43 | 44 |
magick wizard.png -resize 4096x2160! -depth 12 wizard.jp2 
45 | 46 |

Here is a complete list of JPEG-2000 decoding options:

47 | 48 |
49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 |
jp2:quality-layers=xset the maximum number of quality layers to decode.
jp2:reduce-factor=xset the number of highest resolution levels to be discarded.
59 | 60 |

Here is a complete list of JPEG-2000 encoding options:

61 | 62 |
63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 |
jp2:number-resolutions=xnumber of resolutions to encode.
jp2:quality=x,x,...set the quality layer PSNR, given in dB. The order is from left to right in ascending order. The default is a single lossless quality layer.
jp2:rate=x,x,...the compression ratio values. Each value is a factor of compression, thus 20 means 20 times compressed. The order is from left to right in descending order. A final lossless quality layer is signified by the value 1. The default is a single lossless quality layer.
jp2:progression-order=xchoose from LRCP, RLCP, RPCL, PCRL or CPRL.
81 |
82 | -------------------------------------------------------------------------------- /source/core/sigmoidal-contrast.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | 6 | static MagickBooleanType SigmoidalContrast(ImageView *contrast_view, 7 | const ssize_t y,const int id,void *context) 8 | { 9 | #define QuantumScale ((MagickRealType) 1.0/(MagickRealType) QuantumRange) 10 | #define SigmoidalContrast(x) \ 11 | (QuantumRange*(1.0/(1+exp(10.0*(0.5-QuantumScale*x)))-0.0066928509)*1.0092503) 12 | 13 | RectangleInfo 14 | extent; 15 | 16 | register IndexPacket 17 | *indexes; 18 | 19 | register PixelPacket 20 | *pixels; 21 | 22 | register ssize_t 23 | x; 24 | 25 | extent=GetImageViewExtent(contrast_view); 26 | pixels=GetImageViewAuthenticPixels(contrast_view); 27 | for (x=0; x < (ssize_t) (extent.width-extent.x); x++) 28 | { 29 | pixels[x].red=RoundToQuantum(SigmoidalContrast(pixels[x].red)); 30 | pixels[x].green=RoundToQuantum(SigmoidalContrast(pixels[x].green)); 31 | pixels[x].blue=RoundToQuantum(SigmoidalContrast(pixels[x].blue)); 32 | pixels[x].opacity=RoundToQuantum(SigmoidalContrast(pixels[x].opacity)); 33 | } 34 | indexes=GetImageViewAuthenticIndexes(contrast_view); 35 | if (indexes != (IndexPacket *) NULL) 36 | for (x=0; x < (ssize_t) (extent.width-extent.x); x++) 37 | indexes[x]=(IndexPacket) RoundToQuantum(SigmoidalContrast(indexes[x])); 38 | return(MagickTrue); 39 | } 40 | 41 | int main(int argc,char **argv) 42 | { 43 | #define ThrowImageException(image) \ 44 | { \ 45 | \ 46 | CatchException(exception); \ 47 | if (contrast_image != (Image *) NULL) \ 48 | contrast_image=DestroyImage(contrast_image); \ 49 | exit(-1); \ 50 | } 51 | #define ThrowViewException(view) \ 52 | { \ 53 | char \ 54 | *description; \ 55 | \ 56 | ExceptionType \ 57 | severity; \ 58 | \ 59 | description=GetImageViewException(view,&severity); \ 60 | (void) fprintf(stderr,"%s %s %lu %s\n",GetMagickModule(),description); \ 61 | description=(char *) MagickRelinquishMemory(description); \ 62 | exit(-1); \ 63 | } 64 | 65 | ExceptionInfo 66 | *exception; 67 | 68 | Image 69 | *contrast_image; 70 | 71 | ImageInfo 72 | *image_info; 73 | 74 | ImageView 75 | *contrast_view; 76 | 77 | MagickBooleanType 78 | status; 79 | 80 | if (argc != 3) 81 | { 82 | (void) fprintf(stdout,"Usage: %s image sigmoidal-image\n",argv[0]); 83 | exit(0); 84 | } 85 | /* 86 | Read an image. 87 | */ 88 | MagickCoreGenesis(*argv,MagickTrue); 89 | image_info=AcquireImageInfo(); 90 | (void) CopyMagickString(image_info->filename,argv[1],MaxTextExtent); 91 | exception=AcquireExceptionInfo(); 92 | contrast_image=ReadImage(image_info,exception); 93 | if (contrast_image == (Image *) NULL) 94 | ThrowImageException(contrast_image); 95 | /* 96 | Sigmoidal non-linearity contrast control. 97 | */ 98 | contrast_view=NewImageView(contrast_image); 99 | if (contrast_view == (ImageView *) NULL) 100 | ThrowImageException(contrast_image); 101 | status=UpdateImageViewIterator(contrast_view,SigmoidalContrast,(void *) NULL); 102 | if (status == MagickFalse) 103 | ThrowImageException(contrast_image); 104 | contrast_view=DestroyImageView(contrast_view); 105 | /* 106 | Write the image then destroy it. 107 | */ 108 | status=WriteImages(image_info,contrast_image,argv[2],exception); 109 | if (status == MagickFalse) 110 | ThrowImageException(contrast_image); 111 | contrast_image=DestroyImage(contrast_image); 112 | exception=DestroyExceptionInfo(exception); 113 | image_info=DestroyImageInfo(image_info); 114 | MagickCoreTerminus(); 115 | return(0); 116 | } 117 | -------------------------------------------------------------------------------- /include/mirror.php: -------------------------------------------------------------------------------- 1 | 7 |
8 |

ImageMagick source and binary distributions are available from a variety of FTP and Web mirrors around the world listed below. ImageMagick stable and development source releases are also available from Git. Before you download, you may want to review recent changes to the ImageMagick distribution. The authoritative source code repository is https://github.com/ImageMagick.

9 |

The latest release of ImageMagick is version .

10 |
11 |
Austrailia
12 |
https://mirror.endianness.com/imagemagick
13 |
https://mirror.aarnet.edu.au/pub/imagemagick/
14 |
Germany
15 |
https://mirror.dogado.de/imagemagick/
16 |
http://mirror.checkdomain.de/imagemagick/
17 |
ftp://mirror.checkdomain.de/imagemagick/
18 |
Poland
19 |
https://ftp.icm.edu.pl/pub/unix/graphics/ImageMagick/
20 |
rsync://ftp.icm.edu.pl/pub/unix/graphics/ImageMagick/
21 |
Sweden
22 |
https://mirror.accum.se/mirror/imagemagick.org/ftp/
23 |
rsync://mirror.accum.se/mirror/imagemagick.org/ftp/
24 |
Switzerland
25 |
https://mirror.metanet.ch/imagemagick/
26 |
United States
27 |
https://imagemagick.org/archive
28 |
https://github.com/ImageMagick (Git)
29 |
Select Binaries
30 |
http://www.macports.org/ports.php?by=name&substr=imagemagick (Mac OS X)
31 |
http://hpux.connect.org.uk/hppd/hpux/X11/Viewers/ (HP-UX 10.20 and 11.00)
32 |
Rsync Mirrors
33 |
rsync://rsync.is.co.za/IS-Mirror/mirror.imagemagick.org/
34 |
rsync://mirror.imagemagick.org/magick_html/ (Web site mirror)
35 |
rsync://mirror.imagemagick.org/magick_ftp/ (FTP mirror)
36 |
37 |

If you want to add a new mirror, please contact us.

38 |
39 | -------------------------------------------------------------------------------- /source/configure.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 8 | ]> 9 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /script/session.php: -------------------------------------------------------------------------------- 1 | "; 48 | session_unset(); 49 | session_destroy(); 50 | ob_end_flush(); 51 | exit; 52 | } 53 | session_cache_limiter('public'); 54 | } 55 | /* 56 | Generate dynamic content. 57 | */ 58 | ini_set("url_rewriter.tags", "a=href,area=href,input=src,fieldset="); 59 | ini_set("arg_separator.output","&"); 60 | session_start(); 61 | $path=pathinfo($filename); 62 | $_SESSION['AbsolutePath']=$path['dirname']; 63 | $path=pathinfo($_SERVER['SCRIPT_NAME']); 64 | $_SESSION['RelativePath']=$path['dirname']; 65 | if (strlen($_SESSION['RelativePath']) == 1) 66 | $_SESSION['RelativePath']=''; 67 | if (($_SERVER['SERVER_NAME'] == 'www.imagemagick.com') || 68 | ($_SERVER['SERVER_NAME'] == 'www.imagemagick.net') || 69 | ($_SERVER['SERVER_NAME'] == 'www.imagemagick.org')) 70 | { 71 | header("Location: https://imagemagick.org/index.php"); 72 | exit; 73 | } 74 | $use_sts = true; 75 | if (($_SERVER["SERVER_ADDR"] == "10.144.245.30") || 76 | (isset($_SERVER["MAGICK_DEVCONTAINER"]) && $_SERVER["MAGICK_DEVCONTAINER"] == "true")) { 77 | $use_sts = false; 78 | } 79 | if ($use_sts && isset($_SERVER['HTTPS'])) { 80 | header('Strict-Transport-Security: max-age=63072000; includeSubDomains; preload'); 81 | } elseif ($use_sts && !isset($_SERVER['HTTPS'])) { 82 | header('Status-Code: 301'); 83 | header('Location: https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']); 84 | } 85 | require_once($_SESSION['AbsolutePath'] . '/../class/Mail.php'); 86 | require_once($_SESSION['AbsolutePath'] . '/../class/MetaContent.php'); 87 | require_once($_SESSION['AbsolutePath'] . '/../function/geometry.php'); 88 | require_once($_SESSION['AbsolutePath'] . '/../function/option.php'); 89 | require_once($_SESSION['AbsolutePath'] . '/../include/define.php'); 90 | require_once($_SESSION['AbsolutePath'] . '/../include/layout.php'); 91 | SiteHeader($title,$topic,$description); 92 | require_once($_SESSION['AbsolutePath'] . '/../include/' . $script); 93 | SiteFooter(); 94 | if ($useCache) { 95 | file_put_contents($cacheName,ob_get_contents()); 96 | } 97 | session_unset(); 98 | session_destroy(); 99 | ob_end_flush(); 100 | exit; 101 | ?> 102 | -------------------------------------------------------------------------------- /include/clahe.php: -------------------------------------------------------------------------------- 1 | 7 |
8 |

Use contrast limited adaptive histogram equalization (AHE) to improve contrast in images. Ordinary histogram equalization computes a global equalization whereas an adaptive method computes several histograms, each corresponding to a distinct section of the image, and uses them to redistribute the lightness values of the image. It is suitable for improving the local contrast and enhancing the definitions of edges in each region of an image. A variant of adaptive histogram equalization, contrast limited adaptive histogram equalization (CLAHE) limits AHE's tendency to overamplify noise in relatively homogeneous regions of an image.

9 |

CLAHE is supported as of ImageMagick 7.0.8-24 with the -clahe option:

10 |
    11 |
    -clahe widthxheight{%}{+}number-bins{+}clip-limit{!}
    12 |
13 |

The image is divided into tiles of width and height pixels. Append % to define the width and height as percentages of the image's dimensions. The tile size should be larger than the size of features to be preserved and respects the aspect ratio of the image. Add ! to force an exact tile width and height. number-bins is the number of histogram bins per tile (min 2, max 65536). The number of histogram bins should be smaller than the number of pixels in a single tile. clip-limit is the contrast limit for localized changes in contrast. A clip-limit of 2 to 3 is a good starting place (e.g. -clahe 50x50%+128+3). Very large values will let the histogram equalization do whatever it wants to do, that is result in maximal local contrast. The value 1 will result in the original image. Note, if the number of bins and the clip-limit are omitted, they default to 128 and no clipping respectively.

14 |

To visualize the benefits of CLAHE, we have a low contrast image of mountains:

15 |

16 |

    17 | label 18 |
19 |

We can improve the image with global histogram equalization:

20 |
    21 | label 22 |
23 |

We can further improve the image with the contrast limited adaptive histogram equalization image processing technique:

24 |
    25 | label 26 |
27 |

The latter image was produced with this command:

28 |
magick mountains.jpg -clahe 25x25%+128+3 mountains-clahe.jpg
29 |

The 25x25% argument divides the image into 16 tiles to perform local contrast enhancement. The image dimensions are 1500x1000 so the tiles are exactly 375x250 pixels each. Rather than a percentage, you can specify the tile dimensions directly with 375x250.

30 |

For tile sizes that do not divide evenly into the image dimensions, CLAHE utilizes virtual pixels, as such the results can vary slightly based on your chosen virtual pixel method. For example,

31 |
magick mountains.jpg -virtual-pixel mirror -clahe 300x300+128+3! mountains-clahe.jpg
32 |

Notice the !. That forces the tile size to exactly 300x300 pixels, whereas without the !, the tile size respects the aspect ratio of the image and results in tile dimensions of 300x200.

33 | 34 |
35 | -------------------------------------------------------------------------------- /Magick++/CoderInfo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Magick++ API: Access Raw Image Pixels 7 | 8 | 9 | 10 |
11 |

Magick::CoderInfo

12 |

The CoderInfo class provides the means to provide information regarding ImageMagick support for an image format (designated by a magick string). It may be used to provide support for a specific named format (provided as an argument to the constructor), or as an element of a container when format support is queried using the coderInfoList() templated function.

13 |

The following code fragment illustrates how CoderInfo may be used.

14 |
 15 | CoderInfo info("GIF"); 
 16 | cout < info->name() << ": (" << info->description() << ") : "; 
 17 | cout << "Readable = "; 
 18 | if ( info->isReadable() ) 
 19 |   cout << "true"; 
 20 | else 
 21 |   cout << "false"; 
 22 | cout << ", "; 
 23 | cout << "Writable = "; 
 24 | if ( info->isWritable() ) 
 25 |   cout << "true"; 
 26 | else 
 27 |   cout << "false"; 
 28 | cout << ", "; 
 29 | cout << "Multiframe = "; 
 30 | if ( info->isMultiframe() ) 
 31 |   cout << "true"; 
 32 | else 
 33 |   cout << "false"; 
 34 | cout << endl;
 35 | 
36 |

The methods available in the CoderInfo class are shown in the following table:

37 |
38 |

    CoderInfo Methods

    39 | 40 | 41 | 43 | 45 | 47 | 49 | 50 | 52 | 53 | 55 | 57 | 58 | 60 | 62 | 64 | 66 | 67 | 69 | 71 | 73 | 75 | 76 | 78 | 80 | 82 | 84 | 85 | 87 | 89 | 91 | 93 | 94 | 96 | 98 | 100 |
    42 |

    Method

    44 |

    Returns

    46 |

    Signature

    48 |

    Description

    51 |

    CoderInfo

    54 |

    void

    56 |

    Construct object corresponding to named format (e.g. "GIF"). An exception is thrown if the format is not supported.

    59 |

    name

    61 |

    std::string

    63 |

    void

    65 |

    Format name (e.g. "GIF").

    68 |

    description

    70 |

    std::string

    72 |

    void

    74 |

    Format description (e.g. "CompuServe graphics interchange format").

    77 |

    isReadable

    79 |

    bool

    81 |

    void

    83 |

    Format is readable.

    86 |

    isWritable

    88 |

    bool

    90 |

    void

    92 |

    Format is writeable.

    95 |

    isMultiFrame

    97 |

    bool

    99 |

    void

    101 |

    Format supports multiple frames.

102 |
103 | 104 | 105 | -------------------------------------------------------------------------------- /Magick++/Image.fig: -------------------------------------------------------------------------------- 1 | #FIG 3.2 2 | Landscape 3 | Center 4 | Inches 5 | Letter 6 | 100.00 7 | Single 8 | 0 9 | 1200 2 10 | 6 5250 4125 7425 5175 11 | 2 2 0 1 0 6 5 0 32 0.000 0 0 7 0 0 5 12 | 5325 4350 7425 4350 7425 5175 5325 5175 5325 4350 13 | 4 1 0 0 0 0 10 0.0000 4 135 810 6450 4275 class Options\001 14 | 4 2 0 0 0 0 8 0.0000 4 135 1785 7350 4575 MagickCore::ImageInfo* _imageInfo\001 15 | 4 2 0 0 0 0 8 0.0000 4 135 2040 7350 4800 MagickCore::QuantizeInfo* _quantizeInfo\001 16 | 4 2 0 0 0 0 8 0.0000 4 135 1875 7350 5025 MagickCore::QuantizeInfo* _drawInfo\001 17 | -6 18 | 6 600 4800 2400 5625 19 | 2 2 0 1 0 6 5 0 32 0.000 0 0 7 0 0 5 20 | 600 5025 2400 5025 2400 5625 600 5625 600 5025 21 | 4 1 0 0 0 0 10 0.0000 4 135 690 1500 4950 class Image\001 22 | 4 2 0 0 0 0 8 0.0000 4 135 1395 2325 5400 class ImageRef* _imageRef\001 23 | -6 24 | 6 1425 3600 1575 4650 25 | 1 3 0 1 0 0 0 0 20 0.000 1 0.0000 1500 3675 75 75 1500 3675 1500 3750 26 | 1 3 0 1 0 0 0 0 20 0.000 1 0.0000 1500 4125 75 75 1500 4125 1500 4200 27 | 1 3 0 1 0 0 0 0 20 0.000 1 0.0000 1500 4575 75 75 1500 4575 1500 4650 28 | -6 29 | 2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 2 30 | 1 1 1.00 60.00 120.00 31 | 4800 2400 5325 2400 32 | 2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 2 33 | 1 1 1.00 60.00 120.00 34 | 4800 2775 5550 4350 35 | 2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 2 36 | 1 1 1.00 60.00 120.00 37 | 2400 5325 3075 3600 38 | 2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 2 39 | 1 1 1.00 60.00 120.00 40 | 2400 3000 3075 3000 41 | 2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 2 42 | 1 1 1.00 60.00 120.00 43 | 2400 1800 3075 2325 44 | 2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 2 45 | 1 1 1.00 60.00 120.00 46 | 7425 4500 8100 3900 47 | 2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 2 48 | 1 1 1.00 60.00 120.00 49 | 7425 2250 8100 2250 50 | 2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 4 51 | 1 1 1.00 60.00 120.00 52 | 7425 2550 7800 2550 7800 2850 8100 2850 53 | 2 2 0 1 0 6 5 0 32 0.000 0 0 7 0 0 5 54 | 600 2700 2400 2700 2400 3300 600 3300 600 2700 55 | 2 2 0 1 0 6 5 0 32 0.000 0 0 7 0 0 5 56 | 600 1500 2400 1500 2400 2100 600 2100 600 1500 57 | 2 2 0 1 0 6 5 0 32 0.000 0 0 7 0 0 5 58 | 8100 2100 9300 2100 9300 2400 8100 2400 8100 2100 59 | 2 2 0 1 0 6 5 0 32 0.000 0 0 7 0 0 5 60 | 8100 2700 9300 2700 9300 3000 8100 3000 8100 2700 61 | 2 2 0 1 0 6 5 0 32 0.000 0 0 7 0 0 5 62 | 8100 3600 9300 3600 9300 4200 8100 4200 8100 3600 63 | 2 2 0 1 0 6 5 0 32 0.000 0 0 7 0 0 5 64 | 8100 4500 9300 4500 9300 5100 8100 5100 8100 4500 65 | 2 2 0 1 0 6 5 0 32 0.000 0 0 7 0 0 5 66 | 8100 5400 9300 5400 9300 6000 8100 6000 8100 5400 67 | 2 2 0 1 11 11 100 0 25 0.000 0 0 7 0 0 5 68 | 75 300 9825 300 9825 6150 75 6150 75 300 69 | 2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 2 70 | 1 1 1.00 60.00 120.00 71 | 7425 4800 8100 4800 72 | 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2 73 | 1 1 1.00 60.00 120.00 74 | 7425 5025 8100 5700 75 | 2 2 0 1 0 6 5 0 32 0.000 0 0 7 0 0 5 76 | 3075 2100 4800 2100 4800 3900 3075 3900 3075 2100 77 | 2 2 0 1 0 6 5 0 32 0.000 0 0 7 0 0 5 78 | 5325 2100 7425 2100 7425 2700 5325 2700 5325 2100 79 | 4 1 0 0 0 18 14 0.0000 4 210 3300 5250 900 Magick++ Image Data Structures\001 80 | 4 1 0 0 0 0 10 0.0000 4 135 690 1575 1425 class Image\001 81 | 4 1 0 0 0 0 10 0.0000 4 135 690 1500 2625 class Image\001 82 | 4 1 0 0 0 0 10 0.0000 4 135 1725 8700 3525 struct MagickCore::ImageInfo\001 83 | 4 1 0 0 0 0 10 0.0000 4 135 1890 8700 4425 struct MagickCore::QuantizeInfo\001 84 | 4 2 0 0 0 0 8 0.0000 4 135 1395 2325 1875 class ImageRef* _imageRef\001 85 | 4 2 0 0 0 0 8 0.0000 4 135 1395 2325 3075 class ImageRef* _imageRef\001 86 | 4 2 0 0 0 0 8 0.0000 4 135 1665 4725 2475 struct MagickCore::Image* _image\001 87 | 4 1 0 0 0 0 10 0.0000 4 135 1680 8700 5325 struct MagickCore::DrawInfo\001 88 | 4 2 0 0 0 0 8 0.0000 4 135 1485 4725 3750 class MutexLock _mutexLock\001 89 | 4 2 0 0 0 0 8 0.0000 4 135 1140 4725 2850 class Options* _options\001 90 | 4 2 0 0 0 0 8 0.0000 4 135 390 4725 3150 long _id\001 91 | 4 2 0 0 0 0 8 0.0000 4 135 645 4725 3450 ssize_t _refCount\001 92 | 4 1 0 0 0 0 10 0.0000 4 135 675 8708 2295 Image Data\001 93 | 4 1 0 0 0 0 10 0.0000 4 135 1005 8700 2902 Image Attributes\001 94 | 4 1 0 0 0 0 10 0.0000 4 135 1485 6450 2025 struct MagickCore::Image\001 95 | 4 1 0 0 0 0 10 0.0000 4 135 900 3975 1950 class ImageRef\001 96 | 4 1 0 0 0 0 10 0.0000 4 105 150 2625 2925 ref\001 97 | 4 1 0 0 0 0 10 0.0000 4 105 150 2625 1875 ref\001 98 | 4 1 0 0 0 0 10 0.0000 4 105 150 2625 4425 ref\001 99 | -------------------------------------------------------------------------------- /Magick++/TypeMetric.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Magick++ API: Type Metrics 7 | 8 | 9 | 10 |
11 |

Magick::TypeMetric

12 |

The TypeMetric class provides the means to pass data from the Image class's TypeMetric method to the user. It provides information regarding font metrics such as ascent, descent, text width, text height, and maximum horizontal advance. The units of these font metrics are in pixels, and that the metrics are dependent on the current Image font (default Ghostscript's "Helvetica"), pointsize (default 12 points), and x/y resolution (default 72 DPI) settings.

13 |

The pixel units may be converted to points (the standard resolution-independent measure used by the typesetting industry) via the following equation:

14 |
15 | size_points = (size_pixels * 72)/resolution
16 | 
17 |

where resolution is in dots-per-inch (DPI). This means that at the default image resolution, there is one pixel per point.

18 |

Note that a font's pointsize is only a first-order approximation of the font height (ascender + descender) in points. The relationship between the specified pointsize and the rendered font height is determined by the font designer.

19 |

See FreeType Glyph Conventions for a detailed description of font metrics related issues.

20 |

The methods available in the TypeMetric class are shown in the following table:

21 |

TypeMetric Methods

22 |
    23 | 24 | 26 | 28 | 30 | 32 | 34 | 35 | 37 | 39 | 41 | 43 | 45 | 46 | 48 | 50 | 52 | 54 | 56 | 57 | 59 | 61 | 63 | 65 | 67 | 68 | 70 | 72 | 74 | 76 | 78 | 79 | 81 | 83 | 85 | 87 |
    25 |

    Method

    27 |

    Returns

    29 |

    Units

    31 |

    Signature

    33 |

    Description

    36 |

    ascent

    38 |

    double

    40 |

    Pixels

    42 |

    void

    44 |

    Returns the distance in pixels from the text baseline to the highest/upper grid coordinate used to place an outline point. Always a positive value.

    47 |

    descent

    49 |

    double

    51 |

    Pixels

    53 |

    void

    55 |

    Returns the distance in pixels from the baseline to the lowest grid coordinate used to place an outline point. Always a negative value.

    58 |

    textWidth

    60 |

    double

    62 |

    Pixels

    64 |

    void

    66 |

    Returns text width in pixels.

    69 |

    textHeight

    71 |

    double

    73 |

    Pixels

    75 |

    void

    77 |

    Returns text height in pixels.

    80 |

    maxHorizontalAdvance

    82 |

    double

    84 |

    Pixels

    86 |

    void

    88 |

    Returns the maximum horizontal advance (advance from the beginning of a character to the beginning of the next character) in pixels.

89 |
90 | 91 | 92 | -------------------------------------------------------------------------------- /include/cipher.php: -------------------------------------------------------------------------------- 1 | 7 |
8 |

Encipher an ImageDecipher an ImageEncipher and Decipher Caveats

9 | 10 |

Most images, by design, are made to be viewed often and by many people. Web images, for example, may be viewed hundreds of times a day by a multitude of visitors. However, in some cases, you may want to keep a particular image private so that only you or perhaps a select group of your friends or web visitors can view it. ImageMagick permits you to scramble your images such that unless someone knows your passphrase, they will be unable to view the original content.

11 | 12 |

You could use an enciphering utility to scramble your image but they typically scramble the entire file making it unrecognizable as an image format. With ImageMagick, only the pixels are scrambled. The scrambled image continues to be recognized as an image and will even display in your web page. However, the content appears as gibberish, nothing like the original content.

13 | 14 |

Encipher an Image

15 | 16 |

Use the -encipher option to scramble your image so that it is unrecognizable. The option requires a filename that contains your passphrase. In this example we scramble an image and save it in the PNG format:

17 | 18 |
magick rose.jpg -encipher passphrase.txt rose.png 
19 | 20 |

Here we encipher an image using another image as the passphrase:

21 | 22 |
magick rose.jpg -encipher smiley.gif rose.png 
23 | 24 |

Decipher an Image

25 | 26 |

Use the -decipher option to unscramble your image so that it is recognizable once again. The option requires a filename that contains your passphrase. In this example we unscramble an image and save it in the JPEG format:

27 | 28 |
magick rose.png -decipher passphrase.txt rose.jpg 
29 | 30 |

Encipher and Decipher Caveats

31 | 32 |

Some formats do not support enciphered pixels-- the JPEG or GIF format, for 33 | example. To ensure your image format is supported, encipher a test image and 34 | verify you can restore its original content before you encipher any 35 | additional images in that format.

36 | 37 |

The image format may only support 8-bit and RGB (TrueColor). As such you may 38 | like to include the options "-depth 8 -type TrueColor" before the output 39 | filename.

40 | 41 |

The passphrase can be any combinations of letters and symbols. It should 42 | be a minimum of 12 character combinations to help ensure your image remains 43 | private. Also make sure your passphrase file permissions prevent others from 44 | reading it otherwise unintended users may be able to view the original image 45 | content.

46 | 47 |

You can only restore the original image content if you know your 48 | passphrase. If you lose or forget it, your original image content is lost 49 | forever.

50 | 51 |

ImageMagick only scrambles the image pixels. The image metadata remains 52 | untouched and readable by anyone with access to the image file.

53 | 54 |

ImageMagick uses the AES 56 | cipher in Counter mode. We use the first half of your passphrase to derive the nonce. The second half is the cipher key. When used correctly, AES-CTR provides a high level of confidentiality. To avoid information leaks, you must use a fresh passphrase for each image your encrypt.

57 | 58 |

Currently only ImageMagick can restore your enciphered image content. We 59 | use a standard cipher and mode so other vendors could support enciphered image content.

60 | 61 |

Some small practical examples of image enciphering can be found in IM 62 | Examples Encrypting Image Data.

64 | 65 |
66 | -------------------------------------------------------------------------------- /Magick++/Quantum.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Magick++ API: Quantum 7 | 8 | 9 | 10 |
11 |

Quantum Structure

12 |

The Quantum structure is used to represent pixels in ImageMagick. ImageMagick may be compiled to support 32 or 64 bit pixels. The size of Quantum is controlled by the value of the QuantumDepth define. The default is 64 bit pixels, which provide the best accuracy. If memory consumption must be minimized, or processing time must be minimized, then ImageMagick may be compiled with QuantumDepth=8. The following table shows the relationship between QuantumDepth, the type of Quantum, and the overall Quantum size.

13 |
14 |

Effect Of QuantumDepth Values

15 |
16 | 17 | 18 | 19 | 20 | 21 | 23 | 25 | 27 | 28 | 30 | 32 | 34 | 35 | 37 | 39 |
22 |

QuantumDepth

24 |

Quantum Type

26 |

Quantum Size

29 |

8

31 |

unsigned char

33 |

32 bits

36 |

16

38 |

unsigned short

40 |

64 bits

41 |

The members of the Quantum structure, and their interpretation, are shown in the following table:

42 |
43 |

Quantum Pixel Layout

44 |
45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 54 | 56 | 58 | 59 | 61 | 63 | 65 | 66 | 68 | 70 | 72 | 74 | 76 | 77 | 79 | 81 | 83 | 85 | 87 | 88 | 90 | 92 | 94 | 96 | 98 | 99 | 101 | 103 | 105 | 107 |
53 |

Member

55 |

Type

57 |

Interpretation

60 |

RGBColorspace

62 |

RGBColorspace + matte

64 |

CMYKColorspace

67 |

red

69 |

Quantum

71 |

Red

73 |

Red

75 |

Cyan

78 |

green

80 |

Quantum

82 |

Green

84 |

Green

86 |

Magenta

89 |

blue

91 |

Quantum

93 |

Blue

95 |

Blue

97 |

Yellow

100 |

alpha

102 |

Quantum

104 |

Ignored

106 |

Alpha

108 |

Ignored

109 |
110 | 111 | 112 | -------------------------------------------------------------------------------- /source/piechart.mvg: -------------------------------------------------------------------------------- 1 | push graphic-context 2 | viewbox 0 0 624 369 3 | affine 0.283636 0 0 0.283846 -0 -0 4 | push graphic-context 5 | push graphic-context 6 | fill 'darkslateblue' 7 | stroke 'blue' 8 | stroke-width 1 9 | rectangle 1,1 2199,1299 10 | pop graphic-context 11 | push graphic-context 12 | font-size 40 13 | fill 'white' 14 | stroke-width 1 15 | text 600,1100 'Average: 20.0' 16 | pop graphic-context 17 | push graphic-context 18 | fill 'red' 19 | stroke 'black' 20 | stroke-width 5 21 | path 'M700.0,600.0 L340.0,600.0 A360.0,360.0 0 0,1 408.1452123287954,389.2376150414973 z' 22 | pop graphic-context 23 | push graphic-context 24 | font-size 40 25 | fill 'white' 26 | stroke-width 1 27 | text 1400,140 'MagickWand for PHP' 28 | pop graphic-context 29 | push graphic-context 30 | font-size 30 31 | fill 'white' 32 | stroke-width 1 33 | text 1800,140 '(10.0%)' 34 | pop graphic-context 35 | push graphic-context 36 | fill 'red' 37 | stroke 'black' 38 | stroke-width 4 39 | rectangle 1330,100 1370,140 40 | pop graphic-context 41 | push graphic-context 42 | fill 'yellow' 43 | stroke 'black' 44 | stroke-width 5 45 | path 'M700.0,600.0 L408.1452123287954,389.2376150414973 A360.0,360.0 0 0,1 976.5894480359858,369.56936567559273 z' 46 | pop graphic-context 47 | push graphic-context 48 | font-size 40 49 | fill 'white' 50 | stroke-width 1 51 | text 1400,220 'MagickCore' 52 | pop graphic-context 53 | push graphic-context 54 | font-size 30 55 | fill 'white' 56 | stroke-width 1 57 | text 1800,220 '(29.0%)' 58 | pop graphic-context 59 | push graphic-context 60 | fill 'yellow' 61 | stroke 'black' 62 | stroke-width 4 63 | rectangle 1330,180 1370,220 64 | pop graphic-context 65 | push graphic-context 66 | fill 'fuchsia' 67 | stroke 'black' 68 | stroke-width 5 69 | path 'M700.0,600.0 L976.5894480359858,369.56936567559273 A360.0,360.0 0 0,1 964.2680466142854,844.4634932636567 z' 70 | pop graphic-context 71 | push graphic-context 72 | font-size 40 73 | fill 'white' 74 | stroke-width 1 75 | text 1400,300 'MagickWand' 76 | pop graphic-context 77 | push graphic-context 78 | font-size 30 79 | fill 'white' 80 | stroke-width 1 81 | text 1800,300 '(22.9%)' 82 | pop graphic-context 83 | push graphic-context 84 | fill 'fuchsia' 85 | stroke 'black' 86 | stroke-width 4 87 | rectangle 1330,260 1370,300 88 | pop graphic-context 89 | push graphic-context 90 | fill 'blue' 91 | stroke 'black' 92 | stroke-width 5 93 | path 'M700.0,600.0 L964.2680466142854,844.4634932636567 A360.0,360.0 0 0,1 757.853099990584,955.3210081341651 z' 94 | pop graphic-context 95 | push graphic-context 96 | font-size 40 97 | fill 'white' 98 | stroke-width 1 99 | text 1400,380 'JMagick' 100 | pop graphic-context 101 | push graphic-context 102 | font-size 30 103 | fill 'white' 104 | stroke-width 1 105 | text 1800,380 '(10.6%)' 106 | pop graphic-context 107 | push graphic-context 108 | fill 'blue' 109 | stroke 'black' 110 | stroke-width 4 111 | rectangle 1330,340 1370,380 112 | pop graphic-context 113 | push graphic-context 114 | fill 'lime' 115 | stroke 'black' 116 | stroke-width 5 117 | path 'M700.0,600.0 L757.853099990584,955.3210081341651 A360.0,360.0 0 0,1 340.0,600.0 z' 118 | pop graphic-context 119 | push graphic-context 120 | font-size 40 121 | fill 'white' 122 | stroke-width 1 123 | text 1400,460 'Magick++' 124 | pop graphic-context 125 | push graphic-context 126 | font-size 30 127 | fill 'white' 128 | stroke-width 1 129 | text 1800,460 '(27.5%)' 130 | pop graphic-context 131 | push graphic-context 132 | fill 'lime' 133 | stroke 'black' 134 | stroke-width 4 135 | rectangle 1330,420 1370,460 136 | pop graphic-context 137 | push graphic-context 138 | font-size 100 139 | fill 'white' 140 | stroke-width 1 141 | text 100,150 'ImageMagick' 142 | pop graphic-context 143 | push graphic-context 144 | fill 'none' 145 | stroke 'black' 146 | stroke-width 5 147 | circle 700,600 700,960 148 | pop graphic-context 149 | pop graphic-context 150 | pop graphic-context 151 | -------------------------------------------------------------------------------- /QuickStart.txt: -------------------------------------------------------------------------------- 1 | This file documents how to use the binary distribution packages built by 2 | ImageMagick Studio LLC, and found in the ImageMagick 'binaries' subdirectory 3 | of ImageMagick ftp sites. Those who want to build ImageMagick from source 4 | code should refer to the file README.txt in the ImageMagick source package 5 | or http://www.imagemagick.org/script/install-source.php on the web. 6 | 7 | Unix/Linux/Darwin/macOS/Cygwin/MinGW Install: 8 | 9 | Download the appropriate binary from 10 | 11 | ftp://ftp.imagemagick.org/pub/ImageMagick/binaries 12 | 13 | Create (or choose) a directory to install the package into and change to that 14 | directory, for example: 15 | 16 | cd $HOME 17 | 18 | Extract the contents of the package using the command 19 | 20 | gzip -dc /path/to/package.tar.gz | tar -xf - 21 | 22 | If the 'bin' subdirectory of the extracted package is not already in your 23 | executable search path, add it to your PATH environment variable. For 24 | example 25 | 26 | export PATH; PATH="$HOME/ImageMagick/bin:$PATH" 27 | 28 | Set the MAGICK_HOME environment variable to the path where you extracted the 29 | ImageMagick files. For example 30 | 31 | export MAGICK_HOME="$HOME/ImageMagick-6.5.5" 32 | 33 | On Linux and Solaris machines set the LD_LIBRARY_PATH environment variable: 34 | 35 | export LD_LIBRARY_PATH="$HOME/ImageMagick-6.5.5/lib" 36 | 37 | On macOS (Darwin) machines set the DYLD_LIBRARY_PATH environment variable: 38 | 39 | export DYLD_LIBRARY_PATH="$HOME/ImageMagick-6.5.5/lib" 40 | 41 | Now, test ImageMagick to see if it is working 42 | 43 | convert logo: logo.gif 44 | display logo.gif 45 | 46 | 47 | Additional Information 48 | 49 | Environment Variables: 50 | 51 | In addition to the MAGICK_HOME environment variable defined above, you may 52 | find these variables useful: 53 | 54 | MAGICK_TMPDIR path to store temporary files 55 | LD_LIBRARY_PATH path to libMagick.so and other libraries 56 | 57 | Configuration Files 58 | 59 | ImageMagick depends on a number of external configuration files which 60 | include colors.xml, delegates.xml, magic.xml, coder.xml, and others. 61 | ImageMagick searches for configuration files in the following order, and 62 | loads them if found: 63 | 64 | $MAGICK_CONFIGURE_PATH 65 | $MAGICK_HOME/lib/ImageMagick-6.5.5/config 66 | $MAGICK_HOME/share/ImageMagick-6.5.5/config 67 | $HOME/.magick/ 68 | /lib/ImageMagick-6.5.5/ 69 | / 70 | 71 | Font Files 72 | 73 | ImageMagick is able to load raw TrueType and Postscript font files. It 74 | searches for the font configuration file, type.xml, in the following 75 | order, and loads them if found: 76 | 77 | $MAGICK_CONFIGURE_PATH 78 | $MAGICK_HOME/lib/ImageMagick-6.5.5/config 79 | $MAGICK_HOME/share/ImageMagick-6.5.5/config 80 | $HOME/.magick/ 81 | /lib/ImageMagick-6.5.5/ 82 | / 83 | $MAGICK_FONT_PATH 84 | 85 | Module Files 86 | 87 | ImageMagick's file format support is usually provided in the form of 88 | loadable modules. It searches for loadable modules in the following order 89 | and it uses the first match found: 90 | 91 | / 92 | $MAGICK_HOME/lib/ImageMagick-6.5.5/modules-Q16/coders/ 93 | $HOME/.magick/ 94 | /../lib/ImageMagick-6.5.5/modules-Q16/coders/ 95 | 96 | $MAGICK_HOME/lib/ImageMagick-6.5.5/modules-Q16/coders 97 | $MAGICK_HOME/share/ImageMagick-6.5.5/modules-Q16/coders 98 | $HOME/.magick/ 99 | /lib/ImageMagick-6.5.5/modules-Q16/coders 100 | / 101 | 102 | XP, Win2K, WinME, NT, Win98, Win95 Install: 103 | 104 | Download one of 105 | 106 | ftp://ftp.imagemagick.org/pub/ImageMagick/binaries/ImageMagick-6.5.5-0-Q16-windows-dll.exe 107 | ftp://ftp.imagemagick.org/pub/ImageMagick/binaries/ImageMagick-6.5.5-0-Q16-windows-static.exe 108 | ftp://ftp.imagemagick.org/pub/ImageMagick/binaries/ImageMagick-6.5.5-0-Q8-windows-dll.exe 109 | ftp://ftp.imagemagick.org/pub/ImageMagick/binaries/ImageMagick-6.5.5-0-Q8-windows-static.exe 110 | 111 | and execute it (or "open" it from your browser) to start the installation 112 | program. 113 | 114 | VMS Install: 115 | 116 | Type 117 | 118 | unzip ImageMagick.zip 119 | set default [.imagemagick] 120 | @make 121 | identify -verbose logo: 122 | -------------------------------------------------------------------------------- /assets/cli-translate.js: -------------------------------------------------------------------------------- 1 | function addCliTranslations() { 2 | let imagemagick_cli_lists = null; 3 | 4 | function setCliChanged(selectNode) { 5 | let language = selectNode.value; 6 | 7 | let display_windows = language == "Windows" ? "inherit" : "none"; 8 | let display_linux = language == "Linux" ? "inherit" : "none"; 9 | let display_batch = language == "Batch file" ? "inherit" : "none"; 10 | 11 | for (let node of imagemagick_cli_lists["windows"]) { 12 | node.style.display = display_windows; 13 | } 14 | for (let node of imagemagick_cli_lists["linux"]) { 15 | node.style.display = display_linux; 16 | } 17 | for (let node of imagemagick_cli_lists["batch"]) { 18 | node.style.display = display_batch; 19 | } 20 | for (let node of imagemagick_cli_lists["select"]) { 21 | node.value = language; 22 | } 23 | } 24 | 25 | function addSelectOptions(node) { 26 | let selectCliLanguageNode = document.createElement("select"); 27 | selectCliLanguageNode.className += "btn text-dark bg-light mx-4 cli-select-button"; 28 | selectCliLanguageNode.style.display = "none"; 29 | selectCliLanguageNode.onchange = function(){setCliChanged(this)}; 30 | selectCliLanguageNode.title = "Change operating system syntax"; 31 | let selectCliLanguageOptions = ["Linux","Windows","Batch file"]; 32 | 33 | for (let option of selectCliLanguageOptions) { 34 | let optionNode = document.createElement("option"); 35 | optionNode.text=option; 36 | selectCliLanguageNode.appendChild(optionNode); 37 | } 38 | 39 | node.after(selectCliLanguageNode); 40 | return selectCliLanguageNode; 41 | } 42 | 43 | function translateLinuxToWindows(node) { 44 | const imagemagick_linux_to_windows_replacements = new Map([ 45 | [/\\\s*\n/gm, "^\n"], //replace newlines with ^\n 46 | [/\s?\\(\(|\))\s?/gm, " $1 "], // unescape parens, add space on either side to ensure compatibility "word\)" is valid in linux in windows "word)" is not. 47 | [/\\!/gm,"!"], // unescape exclamation point. 48 | [/'/gm, "\""], //single quote to double quote, breaks on nested quotes. 49 | [/\&|\||\<|\>/gm, "\\$&"], //Escape &,|,<,> - note: appears unused. 50 | ]); 51 | 52 | imagemagick_linux_to_windows_replacements.forEach(function(value,key) { 53 | node.innerHTML = node.innerHTML.replaceAll(key,value); 54 | }); 55 | } 56 | 57 | function translateWindowsToBatch(node) { 58 | const imagemagick_linux_to_windows_bat_replacements = new Map([ 59 | [/%/gm, "%%"], //Double up % signs. Needed for bat files, but not for CMD. 60 | [/^\s*#/gm, "::"], //Replace UNIX comment # with two colons. No support for inline comments. 61 | ]) 62 | 63 | imagemagick_linux_to_windows_bat_replacements.forEach(function(value,key) { 64 | node.innerHTML = node.innerHTML.replaceAll(key,value); 65 | }); 66 | } 67 | 68 | function addLinuxWindowsCLIToggle(node) { 69 | let copyNode = node.cloneNode(true); 70 | copyNode.classList.add("cli-windows"); 71 | copyNode.style.display = "none"; 72 | translateLinuxToWindows(copyNode); 73 | 74 | let batchNode = copyNode.cloneNode(true); 75 | batchNode.classList.add("cli-batch"); 76 | batchNode.style.display = "none"; 77 | translateWindowsToBatch(batchNode); 78 | 79 | if(batchNode.innerHTML == node.innerHTML) { // No change, ignore. 80 | copyNode.remove(); 81 | return []; 82 | } 83 | 84 | node.classList.add("cli-linux"); 85 | node.after(copyNode); 86 | copyNode.after(batchNode); 87 | return [copyNode,batchNode]; 88 | } 89 | 90 | function createCliLists() { 91 | let pres = document.querySelectorAll('pre.cli'); 92 | let cliWindowsList = []; 93 | let cliBatchList = []; 94 | let cliLinuxList = []; 95 | let cliSelectList = []; 96 | for (let pre of pres) { 97 | let samp = pre.querySelector("samp"); 98 | if (samp != null) { 99 | let translated = addLinuxWindowsCLIToggle(samp); 100 | if(translated.length == 2) { 101 | cliLinuxList.push(samp); 102 | cliWindowsList.push(translated[0]); 103 | cliBatchList.push(translated[1]); 104 | cliSelectList.push(addSelectOptions(pre)) 105 | } 106 | } 107 | } 108 | 109 | return { 110 | "windows": cliWindowsList, 111 | "linux": cliLinuxList, 112 | "batch": cliBatchList, 113 | "select": cliSelectList 114 | }; 115 | } 116 | 117 | imagemagick_cli_lists = createCliLists(); 118 | for (let node of imagemagick_cli_lists["select"]) { 119 | node.style.display = null; 120 | } 121 | } 122 | 123 | setTimeout(addCliTranslations, 0); 124 | -------------------------------------------------------------------------------- /include/opencl.php: -------------------------------------------------------------------------------- 1 | 7 |
8 |

ImageMagick has built-in support for some OpenCL accelerated operations. However, there are some conditions for its operation. These requirements are listed below.

9 | 10 |
    11 |
  1. OS and drivers: 12 |
      13 |
    • macOS: has built-in support for OpenCL. No other actions required.
    • 14 |
    • Linux/Windows: on supported platforms, install required drivers to enable OpenCL.
    • 15 |
    • Mobile: ImageMagick's OpenCL support is not available on mobile OSes (IOS/Android).
    • 16 |
    17 |
  2. 18 |
  3. Compile-time flag: ImageMagick's OpenCL must be explicitly enabled when compiling. This is done by running configure with --enable-opencl flag set.
  4. 19 |
  5. Check runtime support: to verify if OpenCL support is enabled, run magick --version. The command output should read Features: ... OpenCL ...
  6. 20 |
  7. Runtime flag: OpenCL is disabled by default in runtime. To enable it use the environment variable MAGICK_OCL_DEVICE=true, e.g. MAGICK_OCL_DEVICE=true magick <options>. And to only enable a specific device use MAGICK_OCL_DEVICE=GPU or MAGICK_OCL_DEVICE=CPU.
  8. 21 |
  9. Command line utility: for proper OpenCL support it's recommended to use magick utility over convert, mogrify and others.
  10. 22 |
  11. Image type: OpenCL acceleration only works on images without a color map. Use true color images instead.
  12. 23 |
  13. Operators: the following is a list of image operators that have been OpenCL accelerated. 24 |
      blur
    25 |   contrast
    26 |   charcoal
    27 |   function
    28 |   grayscale
    29 |   motion-blur
    30 |   resize
    31 | The following operators are OpenCL accelerated as well, but they require alpha channel to be enabled, e.g. magick sample.jpg -alpha on -despeckle null:. 32 |
      despeckle
    33 |   equalize
    34 |   modulate
    35 |
  14. 36 |
37 | 38 |

OpenCL Operation Notes

39 | 40 |

When some of the OpenCL accelerated operators are invoked for the first time and all the conditions above are met, ImageMagick conducts a series of tests to configure the OpenCL environment according to the system hardware; therefore, it is normal to experience a higher latency the first time you use an accelerated option. The OpenCL kernels are embedded inside ImageMagick in source format. During the initial setup, ImageMagick discovers all the available OpenCL devices and compiles the kernels for each of these targets. ImageMagick also runs several performance tests internally to determine the preferred device to use. The compiled kernel code and the performance test results are stored into the cache directory so that the data can be reused by subsequent invocations of the OpenCL path. By default, the OpenCL cached data is stored in $HOME/.cache/ImageMagick on Linux and on MacOSX or in %LOCALAPPDATA%\ImageMagick on Windows. To run these tests for the first time, use the command below:

41 |
MAGICK_OCL_DEVICE=true magick sample.jpg -blur 0x5 null:
42 |

On Windows the MAGICK_OCL_DEVICE=true part should be removed and the command set MAGICK_OCL_DEVICE=true should be executed before executing the command above to enable OpenCL operations.

43 |

To change the cache directory, set the MAGICK_OPENCL_CACHE_DIR environment variable. ImageMagick is able to detect hardware changes, driver updates, and new kernel sources and re-run the setup and the calibration test. You can also force ImageMagick to re-run the process by removing the content from the cache directory.

44 |

In addition to the environment variables mentioned above, ImageMagick provides a set of APIs that allow developers to gain more fine-grained control of the OpenCL acceleration. For example, use the InitializeOpenCL() function to initialize the OpenCL environment:

45 | 46 |
clEnv=GetCurrentOpenCLEnv();
47 | if (InitializeOpenCL(clEnv,exception) == MagickFalse)
48 |   {
49 |     /* looks like OpenCL is not supported  */
50 |   }
51 |
52 | -------------------------------------------------------------------------------- /Magick++/Cache.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | SVG drawing 6 | This was produced by version 4.1 of GNU libplot, a free library for exporting 2-D vector graphics. 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | columns() 30 | rows() 31 | 0,0 32 | columns_ 33 | x,y 34 | rows_ 35 | Pixel 36 | 37 | 38 | -------------------------------------------------------------------------------- /source/type-solaris.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | ]> 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | --------------------------------------------------------------------------------