1#!/usr/bin/perl 2# Copyright 1999-2019 ImageMagick Studio LLC, a non-profit organization 3# dedicated to making software imaging solutions freely available. 4# 5# You may not use this file except in compliance with the License. You may 6# obtain a copy of the License at 7# 8# https://imagemagick.org/script/license.php 9# 10# Unless required by applicable law or agreed to in writing, software 11# distributed under the License is distributed on an "AS IS" BASIS, 12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13# See the License for the specific language governing permissions and 14# limitations under the License. 15# 16# Test montage method. 17# 18BEGIN { $| = 1; $test=1, print "1..19\n"; } 19END {print "not ok 1\n" unless $loaded;} 20use Image::Magick; 21$loaded=1; 22 23require 't/subroutines.pl'; 24 25chdir 't' || die 'Cd failed'; 26 27# 28# 1) Test montage defaults (except no label that requires an exact font) 29# 30testMontage( q//, 31 q/background=>'#696e7e'/, 32 'd29f905749426e5491bbd8c4f58b7c14dc1a72250632b7e7b542910e0cbb7c77'); 33 34# 35# 2) Test Center gravity 36# Image should be centered in frame 37# 38++$test; 39testMontage( q//, 40 q/background=>'#696e7e', geometry=>'90x80+5+5>', gravity=>'Center'/, 41 '21ab4077722e45db67c945b2364cfc1365d3f939d57fc6fb2c7b77f161381c2e'); 42 43# 44# 3) Test NorthWest gravity 45# Image should be at top-left in frame 46# 47++$test; 48testMontage( q//, 49 q/background=>'#696e7e', geometry=>'90x80+5+5>', gravity=>'NorthWest'/, 50 'a518ad6aa1c3ad2b117864525d610481c1b3b9ead2c624c773fb427f85ef897b'); 51 52# 53# 4) Test North gravity 54# Image should be at top-center of frame 55# 56++$test; 57testMontage( q//, 58 q/background=>'#696e7e', geometry=>'90x80+5+5>', gravity=>'North'/, 59 '4126725283eb699545d755a6b30c5fc6cee9ac16a1e8310cdbbedcbd054bebf6'); 60 61# 62# 5) Test NorthEast gravity 63# Image should be at top-right of frame 64# 65++$test; 66testMontage( q//, 67 q/background=>'#696e7e', geometry=>'90x80+5+5>', gravity=>'NorthEast'/, 68 'e144c8d0da144864063753903838a286d46da56ca9ea0ce0b6080f84c6feac6c'); 69 70# 71# 6) Test West gravity 72# Image should be at left-center of frame 73# 74++$test; 75testMontage( q//, 76 q/background=>'#696e7e', geometry=>'90x80+5+5>', gravity=>'West'/, 77 '67286cf1ed572e836f6b67c5d733a039bba9e6a7ef18d25397e46c17223b206f'); 78 79# 80# 7) Test East gravity 81# Image should be at right-center of frame. 82# 83++$test; 84testMontage( q//, 85 q/background=>'#696e7e', geometry=>'90x80+5+5>', gravity=>'East'/, 86 'decf855bf26dfc3f7401769a09e302d8bac53cba6c27fd456cdfbc35e494be01'); 87 88# 89# 8) Test SouthWest gravity 90# Image should be at bottom-left of frame 91# 92++$test; 93testMontage( q//, 94 q/background=>'#696e7e', geometry=>'90x80+5+5>', gravity=>'SouthWest'/, 95 '848fda241866b1a191ab4794b42272b5756dbeacac5b58ef5227a34a8c72817d'); 96 97# 98# 9) Test South gravity 99# Image should be at bottom of frame 100# 101++$test; 102testMontage( q//, 103 q/background=>'#696e7e', geometry=>'90x80+5+5>', gravity=>'South'/, 104 'f5cccb291b3bea8cb62e5cd7a6c8e154eedfd8e12c20409a8e663231e62411c4'); 105 106# 107# 10) Test SouthEast gravity 108# Image should be at bottom-right of frame. 109# 110++$test; 111testMontage( q//, 112 q/background=>'#696e7e', geometry=>'90x80+5+5>', gravity=>'SouthEast'/, 113 'a19748d933fefe536b29b8ba98ce0024e3f2dc98102a1f56307a229bc3042f1c'); 114 115# 116# 11) Test Framed Montage 117# 118# Image border color 'bordercolor' controls frame background color 119# Image matte color 'mattecolor' controls frame color 120# Image pen color 'pen' controls label text foreground color 121++$test; 122testMontage( q/bordercolor=>'blue', mattecolor=>'red'/, 123 q/background=>'#696e7e', tile=>'4x4', geometry=>'90x80+3+3>', frame=>'8x10', 124 borderwidth=>'0', gravity=>'Center', background=>'gray'/, 125 'dcfa6c2bc0e20ff0b5dba464559a1e106e605ec456c21c1205a53e478e4f3e02', 126 'dcfa6c2bc0e20ff0b5dba464559a1e106e605ec456c21c1205a53e478e4f3e02', 127 '72a7587a058c71cd62226e59b64c335190a37d7dd990d68534cf05df61084783'); 128 129# 130# 12) Test Framed Montage with drop-shadows 131# 132++$test; 133testMontage( q/bordercolor=>'blue', mattecolor=>'red'/, 134 q/background=>'#696e7e', tile=>'4x4', geometry=>'90x80+6+6>', frame=>'8x10', 135 borderwidth=>'0', gravity=>'Center', shadow=>'True',background=>'gray'/, 136 'b3b7a530270164b4c5e391ac8080736a901428e5f650694170969fd292559317', 137 'b3b7a530270164b4c5e391ac8080736a901428e5f650694170969fd292559317', 138 '9fe18e11ac759d3a86362f16d0bdee4b6952d617daa3ad2c3511e19050dda71d'); 139 140# 141# 13) Test Framed Montage with drop-shadows and background texture 142# 143++$test; 144testMontage( q/bordercolor=>'blue', mattecolor=>'red'/, 145 q/background=>'#696e7e', tile=>'4x4', geometry=>'90x80+6+6>', frame=>'8x10', 146 borderwidth=>'0', gravity=>'Center', shadow=>'True', texture=>'granite:'/, 147 '08d4dfa09995e13a518002565d862f6e89d65de37d59c1d1ab45d7c6cde6bd47'); 148 149# 150# 14) Test Un-bordered, Un-framed Montage 151# 152++$test; 153testMontage( q//, 154 q/background=>'#696e7e', tile=>'4x4', geometry=>'90x80+6+6>', mode=>'Unframe', 155 borderwidth=>'0', gravity=>'Center', background=>'gray'/, 156 '245f9fbee901f99e08458aad797ade92ea17e68b230212510ad2eca96e169e39', 157 '245f9fbee901f99e08458aad797ade92ea17e68b230212510ad2eca96e169e39', 158 'ab07c5591848f1aa8bfffc46c094be40cf662e18f68b19229f1f7e9d9eec4692'); 159 160# 161# 15) Test Bordered, Un-framed Montage (mode=>'Unframe') 162# 163++$test; 164testMontage( q/bordercolor=>'red'/, 165 q/background=>'#696e7e', tile=>'4x4', geometry=>'90x80+6+6>', mode=>'Unframe', 166 borderwidth=>'5', gravity=>'Center', background=>'gray'/, 167 '611833bd0e13681a82d34c4c40b2a263bf245ac879de240114df874f9eaca7f0', 168 '611833bd0e13681a82d34c4c40b2a263bf245ac879de240114df874f9eaca7f0', 169 '65bb1cd11a0dbbd90ca46b07ce58b2ba5fcfadc0869356e5a08eda53510e0126'); 170 171# 172# 16) Test Bordered, Un-framed Montage (mode=>'UnFrame') 173# 174++$test; 175testMontage( q/bordercolor=>'red'/, 176 q/ tile=>'4x4', geometry=>'90x80+6+6>', mode=>'UnFrame', 177 borderwidth=>'5', gravity=>'Center', background=>'gray'/, 178 '611833bd0e13681a82d34c4c40b2a263bf245ac879de240114df874f9eaca7f0', 179 '611833bd0e13681a82d34c4c40b2a263bf245ac879de240114df874f9eaca7f0', 180 '65bb1cd11a0dbbd90ca46b07ce58b2ba5fcfadc0869356e5a08eda53510e0126'); 181 182# 183# 17) Test Un-bordered, Un-framed Montage with 16x1 tile 184# 185++$test; 186testMontage( q//, 187 q/background=>'#696e7e', tile=>'16x1', geometry=>'90x80+0+0>', mode=>'Unframe', 188 borderwidth=>'0', gravity=>'Center', background=>'gray'/, 189 '49bf08b9ae34c7c8acee15b123c29e414ae6fb9bdf2a15dbdd3a33a753b8e7ff', 190 '49bf08b9ae34c7c8acee15b123c29e414ae6fb9bdf2a15dbdd3a33a753b8e7ff', 191 'c42d5f2bef5f30167f02d6ba85504ee82e06c16d9404bc6fc0f6e75c0f8f53e9'); 192 193# 194# 18) Test concatenated thumbnail Montage (concatenated via special Concatenate mode) 195# Thumbnails should be compacted tightly together in a grid 196# 197++$test; 198testMontage( q//, 199 q/background=>'#696e7e', tile=>'4x4', geometry=>'90x80>', mode=>'Concatenate'/, 200 'b46f6d6c6305ab1d5f05f89030e775fca2f01dd5d40a8340372bd31dafaa4e83'); 201# 202# 19) Test concatenated thumbnail Montage (concatentated by setting params to zero) 203# Thumbnails should be compacted tightly together in a grid 204# 205++$test; 206testMontage( q//, 207 q/background=>'#696e7e', tile=>'4x4', geometry=>'+0+0', mode=>'Unframe', shadow=>'False', 208 borderwidth=>'0', background=>'gray'/, 209 'b46f6d6c6305ab1d5f05f89030e775fca2f01dd5d40a8340372bd31dafaa4e83', 210 'b46f6d6c6305ab1d5f05f89030e775fca2f01dd5d40a8340372bd31dafaa4e83', 211 '6c61a8ad7be5f8c368dcb591f766349e648b623cbc41e6699ba3ea53ef182510'); 212