Repository 'imagemagick_image_montage'
hg clone https://toolshed.g2.bx.psu.edu/repos/bgruening/imagemagick_image_montage

Changeset 0:506a90ab5581 (2025-09-01)
Next changeset 1:65703c06c1f6 (2025-10-30)
Commit message:
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/image_processing/imagemagick commit 76bec0462c7a1702a95af31d1fa3ce00bd106c93
added:
macros.xml
montage.xml
test-data/Mirror Donald.png
test-data/donald-colors-2.jpg
test-data/donald-palette.jpg
test-data/donald.jpg
test-data/outputs/tmp_00.jpg
test-data/outputs/tmp_01.jpg
test-data/result_image_compare01.log
test-data/result_image_compare01.png
test-data/result_image_compare02.log
test-data/result_image_compare02.png
test-data/result_image_compare03.log
test-data/result_image_compare03.png
test-data/result_image_composite01.png
test-data/result_image_composite01_norm.png
test-data/result_image_composite01_stats.txt
test-data/result_image_convert_1.png
test-data/result_image_montage_1.png
test-data/result_image_montage_2.png
test-data/result_image_montage_3.png
test-data/test.pdf
b
diff -r 000000000000 -r 506a90ab5581 macros.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/macros.xml Mon Sep 01 15:51:11 2025 +0000
b
b'@@ -0,0 +1,181 @@\n+<macros>\n+    <token name="@TOOL_VERSION@">7.1.2-2</token>\n+    <token name="@VERSION_SUFFIX@">0</token>\n+    <xml name="requirements">\n+        <requirements>\n+            <requirement type="package" version="@TOOL_VERSION@">imagemagick</requirement>\n+            <requirement type="package" version="2.13.3">freetype</requirement>\n+            <yield/>\n+        </requirements>\n+    </xml>\n+    <xml name="citations">\n+        <citations>\n+            <citation type="bibtex">\n+                    @software{imagemagick,\n+                    author = {{ImageMagick Studio LLC}},\n+                    title = {ImageMagick},\n+                    url = {https://imagemagick.org},\n+                    version = {7.1.1},\n+                    date = {2024-01-04},\n+                }\n+            </citation>\n+        </citations>\n+    </xml>\n+    <xml name="color">\n+        <param name="color" type="select" label="Highlight color">\n+            <option value="default"  selected="true" >Default</option>\n+            <option value="AliceBlue">AliceBlue</option>\n+            <option value="AntiqueWhite">AntiqueWhite</option>\n+            <option value="aqua">aqua</option>\n+            <option value="aquamarine">aquamarine</option>\n+            <option value="azure">azure</option>\n+            <option value="beige">beige</option>\n+            <option value="bisque">bisque</option>\n+            <option value="black">black</option>\n+            <option value="BlanchedAlmond">BlanchedAlmond</option>\n+            <option value="blue">blue</option>\n+            <option value="BlueViolet">BlueViolet</option>\n+            <option value="brown">brown</option>\n+            <option value="burlywood">burlywood</option>\n+            <option value="cadet">cadet</option>\n+            <option value="CadetBlue">CadetBlue</option>\n+            <option value="chartreuse">chartreuse</option>\n+            <option value="chocolate">chocolate</option>\n+            <option value="coral">coral</option>\n+            <option value="CornflowerBlue">CornflowerBlue</option>\n+            <option value="cornsilk">cornsilk</option>\n+            <option value="crimson">crimson</option>\n+            <option value="cyan">cyan</option>\n+            <option value="dark">dark</option>\n+            <option value="DarkBlue">DarkBlue</option>\n+            <option value="DarkCyan">DarkCyan</option>\n+            <option value="DarkGoldenrod">DarkGoldenrod</option>\n+            <option value="DarkGray">DarkGray</option>\n+            <option value="DarkGreen">DarkGreen</option>\n+            <option value="DarkKhaki">DarkKhaki</option>\n+            <option value="DarkMagenta">DarkMagenta</option>\n+            <option value="DarkOliveGreen">DarkOliveGreen</option>\n+            <option value="DarkOrange">DarkOrange</option>\n+            <option value="DarkOrchid">DarkOrchid</option>\n+            <option value="DarkRed">DarkRed</option>\n+            <option value="DarkSalmon">DarkSalmon</option>\n+            <option value="DarkSeaGreen">DarkSeaGreen</option>\n+            <option value="DarkSlateBlue">DarkSlateBlue</option>\n+            <option value="DarkSlateGray">DarkSlateGray</option>\n+            <option value="DarkTurquoise">DarkTurquoise</option>\n+            <option value="DarkViolet">DarkViolet</option>\n+            <option value="DeepPink">DeepPink</option>\n+            <option value="DeepSkyBlue">DeepSkyBlue</option>\n+            <option value="DimGray">DimGray</option>\n+            <option value="DodgerBlue">DodgerBlue</option>\n+            <option value="firebrick">firebrick</option>\n+            <option value="FloralWhite">FloralWhite</option>\n+            <option value="ForestGreen">ForestGreen</option>\n+            <option value="fractal">fractal</option>\n+            <option value="fuchsia">fuchsia</option>\n+            <option value="gainsboro">gainsboro</option>\n+            <option value="GhostWhite">GhostWhite</option>\n+            <option value="gold">g'..b'         <option value="linen">linen</option>\n+            <option value="magenta">magenta</option>\n+            <option value="maroon">maroon</option>\n+            <option value="MediumAquamarine">MediumAquamarine</option>\n+            <option value="MediumBlue">MediumBlue</option>\n+            <option value="MediumForestGreen">MediumForestGreen</option>\n+            <option value="MediumGoldenRod">MediumGoldenRod</option>\n+            <option value="MediumOrchid">MediumOrchid</option>\n+            <option value="MediumPurple">MediumPurple</option>\n+            <option value="MediumSeaGreen">MediumSeaGreen</option>\n+            <option value="MediumSlateBlue">MediumSlateBlue</option>\n+            <option value="MediumSpringGreen">MediumSpringGreen</option>\n+            <option value="MediumTurquoise">MediumTurquoise</option>\n+            <option value="MediumVioletRed">MediumVioletRed</option>\n+            <option value="MidnightBlue">MidnightBlue</option>\n+            <option value="MintCream">MintCream</option>\n+            <option value="MistyRose">MistyRose</option>\n+            <option value="moccasin">moccasin</option>\n+            <option value="NavajoWhite">NavajoWhite</option>\n+            <option value="navy">navy</option>\n+            <option value="NavyBlue">NavyBlue</option>\n+            <option value="none">none</option>\n+            <option value="OldLace">OldLace</option>\n+            <option value="olive">olive</option>\n+            <option value="OliveDrab">OliveDrab</option>\n+            <option value="opaque">opaque</option>\n+            <option value="orange">orange</option>\n+            <option value="OrangeRed">OrangeRed</option>\n+            <option value="orchid">orchid</option>\n+            <option value="PaleGoldenrod">PaleGoldenrod</option>\n+            <option value="PaleGreen">PaleGreen</option>\n+            <option value="PaleTurquoise">PaleTurquoise</option>\n+            <option value="PaleVioletRed">PaleVioletRed</option>\n+            <option value="PapayaWhip">PapayaWhip</option>\n+            <option value="PeachPuff">PeachPuff</option>\n+            <option value="peru">peru</option>\n+            <option value="pink">pink</option>\n+            <option value="plum">plum</option>\n+            <option value="PowderBlue">PowderBlue</option>\n+            <option value="purple">purple</option>\n+            <option value="red">red</option>\n+            <option value="RosyBrown">RosyBrown</option>\n+            <option value="RoyalBlue">RoyalBlue</option>\n+            <option value="SaddleBrown">SaddleBrown</option>\n+            <option value="salmon">salmon</option>\n+            <option value="SandyBrown">SandyBrown</option>\n+            <option value="SeaGreen">SeaGreen</option>\n+            <option value="seashell">seashell</option>\n+            <option value="sienna">sienna</option>\n+            <option value="silver">silver</option>\n+            <option value="SkyBlue">SkyBlue</option>\n+            <option value="SlateBlue">SlateBlue</option>\n+            <option value="SlateGray">SlateGray</option>\n+            <option value="snow">snow</option>\n+            <option value="SpringGreen">SpringGreen</option>\n+            <option value="SteelBlue">SteelBlue</option>\n+            <option value="tan">tan</option>\n+            <option value="teal">teal</option>\n+            <option value="thistle">thistle</option>\n+            <option value="tomato">tomato</option>\n+            <option value="transparent">transparent</option>\n+            <option value="turquoise">turquoise</option>\n+            <option value="violet">violet</option>\n+            <option value="VioletRed">VioletRed</option>\n+            <option value="wheat">wheat</option>\n+            <option value="white">white</option>\n+            <option value="WhiteSmoke">WhiteSmoke</option>\n+            <option value="yellow">yellow</option>\n+            <option value="YellowGreen">YellowGreen</option>\n+        </param>\n+    </xml>\n+</macros>\n'
b
diff -r 000000000000 -r 506a90ab5581 montage.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/montage.xml Mon Sep 01 15:51:11 2025 +0000
[
@@ -0,0 +1,140 @@
+<tool id="imagemagick_image_montage" name="Image Montage" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="23.1">
+    <description>with ImageMagick</description>
+    <macros>
+        <import>macros.xml</import>
+    </macros>
+    <expand macro="requirements" />
+    <command detect_errors="aggressive">
+<![CDATA[
+
+    #set $list_inputs = []
+    #if $label_options.label=="true" and $label_options.label_indexes=="false" :
+        #for $idx, $data in enumerate($images):
+            #set $file=$data.input
+            ln -s $file "${file.element_identifier}.${file.ext}" &&
+            $list_inputs.append("%s.%s" % ($file.element_identifier, $file.ext))
+        #end for
+    #else: 
+        #for $idx, $data in enumerate($images):
+            #set $file=$data.input
+            #set $prefix=str($idx+1)
+            ln -s $file "${prefix}.${file.element_identifier}.${file.ext}" &&
+            $list_inputs.append("%s.%s.%s" % ($prefix, $file.element_identifier, $file.ext))
+        #end for
+    #end if 
+
+    fontfile=\$(fc-list | grep DejaVuSans.ttf | head -n 1 | cut -d: -f1) &&
+
+    magick montage
+        -geometry +0+0
+        -background white
+        -font \$fontfile
+        -pointsize $pointsize
+        -tile ${width}x
+        -resize ${resize}% 
+        #if $label_options.label ==  "true":
+            -label "%t"
+        #end if 
+        #if $title:
+            -title '$title'
+        #end if 
+        #for $i in $list_inputs:
+             "$i" 
+        #end for
+        output.png
+]]>
+    </command>
+
+    <inputs>
+        <repeat name="images" title="Dataset">
+            <param name="input" type="data" format="jpg,png,bmp,gif,svg,eps,tiff" label="Image"/>
+        </repeat>
+        <param name="width" type="integer" value="4" label="# of images wide"/>
+        <param name="resize" type="integer" value="100" label="Resize the image (in percent of the original size)"/>
+        <param name="title" type="text" optional="true" label="Add a Title to the image"/>
+        
+        <conditional name="label_options">
+            <param name="label" type="select" label="Add the name of the files as image labels.">
+                <option value="false" selected="true">No</option>
+                <option value="true">Yes</option>
+            </param>
+            <when value="true">
+                <param name="label_indexes" type="boolean" value="false" label="Add the dataset index to the label. (Necessary if you have duplicate names among the images)."/>
+            </when>
+            <when value="false" />
+        </conditional>
+        
+        <param name="pointsize" type="integer" value="14" optional="true" label="Point size of the labels and/or title."/>
+    </inputs>
+    <outputs>
+        <data format="png" name="output" from_work_dir="output.png" />
+    </outputs>
+    <tests>
+        <test>
+            <repeat name="images">
+                <param name="input" value="donald.jpg" />
+            </repeat>
+            <repeat name="images">
+                <param name="input" value="donald.jpg" />
+            </repeat>
+            <repeat name="images">
+                <param name="input" value="Mirror Donald.png" />
+            </repeat>
+            <repeat name="images">
+                <param name="input" value="Mirror Donald.png" />
+            </repeat>
+            <param name="width" value="3" />
+            <output name="output" file="result_image_montage_1.png" compare="sim_size" />
+        </test>
+        <test>
+            <repeat name="images">
+                <param name="input" value="donald.jpg" />
+            </repeat>
+            <repeat name="images">
+                <param name="input" value="Mirror Donald.png" />
+            </repeat>
+            <repeat name="images">
+                <param name="input" value="donald.jpg" />
+            </repeat>
+            <repeat name="images">
+                <param name="input" value="Mirror Donald.png" />
+            </repeat>
+            <param name="width" value="2" />
+            <param name="resize" value="90" />
+            <conditional name="label_options">
+                <param name="label" value="true" />
+                <param name="label_indexes" value="true" />
+            </conditional>
+            <param name="title" value="A bunch of Donalds" />
+            <output name="output" file="result_image_montage_2.png" compare="sim_size" />
+        </test>
+        <test>
+            <repeat name="images">
+                <param name="input" value="donald.jpg" />
+            </repeat>
+            <repeat name="images">
+                <param name="input" value="Mirror Donald.png" />
+            </repeat>
+            <param name="width" value="2" />
+            <conditional name="label_options">
+                <param name="label" value="true" />
+                <param name="label_indexes" value="false" />
+            </conditional>
+            <param name="title" value="Donald Duo" />
+            <output name="output" file="result_image_montage_3.png" compare="sim_size" />
+        </test>
+    </tests>
+    <help>
+<![CDATA[
+
+**What it does**
+
+Montage composites multiple images into a single, larger image. You may need to resize large images before you attempt to montage them.
+
+The width parameter controls how many images wide the montage will be. With a width of 4, and 8 images selected, you will get 2 rows of 4 images. If you have 6 images selected, the first row will have 4 images, and the second will only have two.
+
+
+]]>
+    </help>
+    <expand macro="citations" />
+</tool>
b
diff -r 000000000000 -r 506a90ab5581 test-data/Mirror Donald.png
b
Binary file test-data/Mirror Donald.png has changed
b
diff -r 000000000000 -r 506a90ab5581 test-data/donald-colors-2.jpg
b
Binary file test-data/donald-colors-2.jpg has changed
b
diff -r 000000000000 -r 506a90ab5581 test-data/donald-palette.jpg
b
Binary file test-data/donald-palette.jpg has changed
b
diff -r 000000000000 -r 506a90ab5581 test-data/donald.jpg
b
Binary file test-data/donald.jpg has changed
b
diff -r 000000000000 -r 506a90ab5581 test-data/outputs/tmp_00.jpg
b
Binary file test-data/outputs/tmp_00.jpg has changed
b
diff -r 000000000000 -r 506a90ab5581 test-data/outputs/tmp_01.jpg
b
Binary file test-data/outputs/tmp_01.jpg has changed
b
diff -r 000000000000 -r 506a90ab5581 test-data/result_image_compare01.log
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/result_image_compare01.log Mon Sep 01 15:51:11 2025 +0000
b
@@ -0,0 +1,5 @@
+  Channel distortion: RMSE
+    red: 803.127 (0.0122549)
+    green: 714.973 (0.0109098)
+    blue: 1099.55 (0.016778)
+    all: 887.919 (0.0135488)
\ No newline at end of file
b
diff -r 000000000000 -r 506a90ab5581 test-data/result_image_compare01.png
b
Binary file test-data/result_image_compare01.png has changed
b
diff -r 000000000000 -r 506a90ab5581 test-data/result_image_compare02.log
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/result_image_compare02.log Mon Sep 01 15:51:11 2025 +0000
b
@@ -0,0 +1,5 @@
+  Channel distortion: MAE
+    red: 505.797 (0.00771797)
+    green: 467.716 (0.00713689)
+    blue: 633.576 (0.00966776)
+    all: 535.696 (0.0081742)
\ No newline at end of file
b
diff -r 000000000000 -r 506a90ab5581 test-data/result_image_compare02.png
b
Binary file test-data/result_image_compare02.png has changed
b
diff -r 000000000000 -r 506a90ab5581 test-data/result_image_compare03.log
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/result_image_compare03.log Mon Sep 01 15:51:11 2025 +0000
b
@@ -0,0 +1,5 @@
+  Channel distortion: AE
+    red: 0.0143004
+    green: 0.00805041
+    blue: 0.0330504
+    all: 0.0490741
\ No newline at end of file
b
diff -r 000000000000 -r 506a90ab5581 test-data/result_image_compare03.png
b
Binary file test-data/result_image_compare03.png has changed
b
diff -r 000000000000 -r 506a90ab5581 test-data/result_image_composite01.png
b
Binary file test-data/result_image_composite01.png has changed
b
diff -r 000000000000 -r 506a90ab5581 test-data/result_image_composite01_norm.png
b
Binary file test-data/result_image_composite01_norm.png has changed
b
diff -r 000000000000 -r 506a90ab5581 test-data/result_image_composite01_stats.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/result_image_composite01_stats.txt Mon Sep 01 15:51:11 2025 +0000
b
@@ -0,0 +1,46 @@
+  Channel statistics:
+    Pixels: 38880
+    Red:
+      min: 0  (0)
+      max: 255 (1)
+      mean: 94.5722 (0.370871)
+      median: 79 (0.309804)
+      standard deviation: 65.8692 (0.258311)
+      kurtosis: 0.693803
+      skewness: 1.2915
+      entropy: 0.900321
+    Green:
+      min: 0  (0)
+      max: 255 (1)
+      mean: 77.4938 (0.303897)
+      median: 62 (0.243137)
+      standard deviation: 61.4691 (0.241055)
+      kurtosis: 1.97797
+      skewness: 1.70225
+      entropy: 0.86655
+    Blue:
+      min: 0  (0)
+      max: 255 (1)
+      mean: 55.8372 (0.218969)
+      median: 36 (0.141176)
+      standard deviation: 57.6943 (0.226252)
+      kurtosis: 4.89954
+      skewness: 2.39017
+      entropy: 0.81653
+  Image statistics:
+    Overall:
+      min: 0  (0)
+      max: 255 (1)
+      mean: 75.9677 (0.297913)
+      median: 59 (0.231373)
+      standard deviation: 61.6775 (0.241873)
+      kurtosis: 2.52377
+      skewness: 1.79464
+      entropy: 0.861134
+  Rendering intent: Perceptual
+  Gamma: 0.454545
+  Chromaticity:
+    red primary: (0.64,0.33,0.03)
+    green primary: (0.3,0.6,0.1)
+    blue primary: (0.15,0.06,0.79)
+    white point: (0.3127,0.329,0.3583)
b
diff -r 000000000000 -r 506a90ab5581 test-data/result_image_convert_1.png
b
Binary file test-data/result_image_convert_1.png has changed
b
diff -r 000000000000 -r 506a90ab5581 test-data/result_image_montage_1.png
b
Binary file test-data/result_image_montage_1.png has changed
b
diff -r 000000000000 -r 506a90ab5581 test-data/result_image_montage_2.png
b
Binary file test-data/result_image_montage_2.png has changed
b
diff -r 000000000000 -r 506a90ab5581 test-data/result_image_montage_3.png
b
Binary file test-data/result_image_montage_3.png has changed
b
diff -r 000000000000 -r 506a90ab5581 test-data/test.pdf
b
Binary file test-data/test.pdf has changed