Created
February 12, 2020 16:21
-
-
Save mtrebitsch/92e1e1a52cbc836c131cd8553a8ac3f2 to your computer and use it in GitHub Desktop.
Not very clean script to merge images with ImageMagick
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Define the maps I will use | |
TEMPERATURE="BASE/Obelisk_00194_Projection_y_temperature_density.png" | |
GAMMA="BASE/Obelisk_00194_Projection_y_Gamma_HI_density.png" | |
DENSITY="BASE/Obelisk_00194_Projection_y_H_nuclei_density.png" | |
DM="BASE/Obelisk_00194_Projection_y_DM_density.png" | |
STARS="BASE/Obelisk_00194_Projection_y_star_density.png" | |
SIZE=$(convert $TEMPERATURE -ping -format "%w" info:) | |
HALF=$(echo "scale=0;$SIZE / 2" | bc -l) | |
ONETHIRD=$(echo "scale=0; $SIZE / 3" | bc -l) | |
ONEFOURTH=$(echo "scale=0; $SIZE / 4" | bc -l) | |
THREEFOURTH=$(echo "scale=0; 3 * $SIZE / 4" | bc -l) | |
TWOTHIRD=$(echo "scale=0; 2 *$SIZE / 3" | bc -l) | |
BLUR=$(echo "scale=0;$SIZE / 20" | bc -l) | |
RADIUS=$(echo "scale=0;$SIZE / 8" | bc -l) | |
SMALLRADIUS=$(echo "scale=0;$SIZE / 16" | bc -l) | |
FONTSIZE=$(echo "scale=0;18 * $SIZE / 1000" | bc -l) | |
OFFSET=$(echo "scale=0;5 * $SIZE / 1000" | bc -l) | |
echo "SIZE: $SIZE" | |
echo "RADIUS: $RADIUS" | |
# Half masks | |
if [ ! -f "maskv.png" ] | |
then | |
convert -size ${SIZE}x${SIZE} xc: -draw "rectangle 0,0 ${HALF},${SIZE}" -blur 0x${BLUR} maskv.png | |
fi | |
echo "First mask: OK" | |
if [ ! -f "maskh.png" ] | |
then | |
convert -size ${SIZE}x${SIZE} xc: -draw "rectangle 0,0 ${SIZE},${HALF}" -blur 0x${BLUR} maskh.png | |
fi | |
echo "Second mask: OK" | |
# Circular mask | |
if [ ! -f "maskc.png" ] | |
then | |
convert -size ${SIZE}x${SIZE} xc: -draw "translate ${HALF},${HALF} circle 0,0 ${RADIUS},0" -blur 0x${BLUR} maskc.png | |
fi | |
echo "Circle mask: OK" | |
if [ ! -f "maskcsharp.png" ] | |
then | |
convert -size ${SIZE}x${SIZE} xc: -draw "translate ${HALF},${HALF} circle 0,0 ${SMALLRADIUS},0" maskcsharp.png | |
fi | |
echo "Circle mask: OK" | |
# Vertical thirds | |
if [ ! -f "maskv1third.png" ] | |
then | |
convert -size ${SIZE}x${SIZE} xc: -draw "rectangle 0,0 ${ONETHIRD},${SIZE}" -blur 0x${BLUR} maskv1third.png | |
fi | |
echo "1/3 vertical mask: OK" | |
if [ ! -f "maskv2third.png" ] | |
then | |
convert -size ${SIZE}x${SIZE} xc: -draw "rectangle 0,0 ${TWOTHIRD},${SIZE}" -blur 0x${BLUR} maskv2third.png | |
fi | |
echo "2/3 vertical mask: OK" | |
# Vertical fourth | |
if [ ! -f "maskv1fourth.png" ] | |
then | |
convert -size ${SIZE}x${SIZE} xc: -draw "rectangle 0,0 ${ONEFOURTH},${SIZE}" -blur 0x${BLUR} maskv1fourth.png | |
fi | |
echo "1/4 vertical mask: OK" | |
if [ ! -f "maskv3fourth.png" ] | |
then | |
convert -size ${SIZE}x${SIZE} xc: -draw "rectangle 0,0 ${THREEFOURTH},${SIZE}" -blur 0x${BLUR} maskv3fourth.png | |
fi | |
echo "3/4 vertical mask: OK" | |
# Horizontal thirds | |
if [ ! -f "maskh1third.png" ] | |
then | |
convert -size ${SIZE}x${SIZE} xc: -draw "rectangle 0,0 ${SIZE},${ONETHIRD}" -blur 0x${BLUR} maskh1third.png | |
fi | |
echo "1/3 horizontal mask: OK" | |
if [ ! -f "maskh2third.png" ] | |
then | |
convert -size ${SIZE}x${SIZE} xc: -draw "rectangle 0,0 ${SIZE},${TWOTHIRD}" -blur 0x${BLUR} maskh2third.png | |
fi | |
echo "2/3 horizontal mask: OK" | |
# Diagonal masks | |
if [ ! -f "maskupleft.png" ] | |
then | |
convert -size ${SIZE}x${SIZE} xc: -draw "polygon 0,0 ${SIZE},0 0,${SIZE}" -blur 0x${BLUR} maskupleft.png | |
fi | |
echo "Upper left mask: OK" | |
if [ ! -f "maskupright.png" ] | |
then | |
convert -size ${SIZE}x${SIZE} xc: -draw "polygon 0,0 ${SIZE},${SIZE} ${SIZE},0" -blur 0x${BLUR} maskupright.png | |
fi | |
echo "Upper right mask: OK" | |
# Rotating masks | |
if [ ! -f "clockwise.gif" ] | |
then | |
convert -size ${SIZE}x${SIZE} xc: -draw "polygon 0,0 ${SIZE},${SIZE} ${SIZE},0" -blur 0x${BLUR} -duplicate 179 -distort SRT 1,%[fx:t*2] clockwise.gif | |
mkdir -p clockwise_mask | |
convert clockwise.gif clockwise_mask/clockwise_mask_%05d.png | |
fi | |
echo "First rotating mask: OK" | |
if [ ! -f "clockwise_advance.gif" ] | |
then | |
convert -size ${SIZE}x${SIZE} xc: -draw "polygon 0,0 ${SIZE},${SIZE} ${SIZE},0" -blur 0x${BLUR} -duplicate 179 -distort SRT 1,%[fx:t*2] clockwise_advance.gif | |
mkdir -p clockwise_advance_mask | |
convert clockwise_advance.gif clockwise_advance_mask/clockwise_advance_mask_%05d.png | |
fi | |
echo "Second rotating mask: OK" | |
############################################################################### | |
# First figure: 4 panels (+ centre) | |
# --------------------------------- | |
# Horizontal tiling | |
convert $TEMPERATURE $GAMMA maskv.png -composite obetest1.png | |
convert $DENSITY $DM maskv.png -composite obetest2.png | |
echo "Horizontal tiling done" | |
# Vertical tiling | |
convert obetest1.png obetest2.png maskh.png -composite Obelisk_4var_tmp.png | |
echo "Vertical tiling done" | |
# Second figure: 5 panels (centre) | |
# -------------------------------- | |
# Circle | |
convert $STARS obetest.png maskc.png -composite Obelisk_5var_tmp.png | |
echo "Circular inset done" | |
############################################################################### | |
# Third figure: 3 panels | |
# ---------------------- | |
convert $DENSITY $TEMPERATURE maskv1third.png -composite obetest3.png | |
convert obetest3.png $DM maskv2third.png -composite Obelisk_3var_tmp.png | |
convert $DENSITY $DM maskh.png -composite obetest3.png | |
convert $STARS obetest3.png maskc.png -composite Obelisk_3varbis_tmp.png | |
echo "Three panels done" | |
############################################################################### | |
# Fifth figure: diagonals and cross | |
# --------------------------------- | |
convert $DENSITY $DM maskupleft.png -composite Obelisk_upleft_diagonal.png | |
convert $GAMMA $TEMPERATURE maskupleft.png -composite Obelisk_upright_diagonal.png | |
convert Obelisk_upright_diagonal.png Obelisk_upleft_diagonal.png maskupright.png -composite Obelisk_cross_tmp.png | |
convert $STARS Obelisk_cross_tmp.png maskc.png -composite Obelisk_crosscircle_tmp.png | |
echo "Circular inset done (again)" | |
echo "Cross done" | |
############################################################################### | |
# First figure: 4 panels (+ centre) | |
# --------------------------------- | |
# Horizontal tiling | |
convert $DENSITY $TEMPERATURE maskv1fourth.png -composite obetest1.png | |
convert $GAMMA $DM maskv3fourth.png -composite obetest2.png | |
convert obetest1.png obetest2.png maskv.png -composite Obelisk_allvert.png | |
echo "Multipanel tiling done" | |
convert $STARS Obelisk_allvert.png maskcsharp.png -stroke white -fill none -strokewidth $OFFSET -draw "translate ${HALF},${HALF} circle 0,0 ${SMALLRADIUS},0" -composite Obelisk_allvert_circle.png | |
echo "Circular inset done (again)" | |
convert $STARS Obelisk_cross_tmp.png maskc.png -composite Obelisk_crosscircle_tmp.png | |
echo "Circular inset done (again)" | |
############################################################################### | |
# Post-processing | |
# --------------- | |
# Create small versions | |
convert -resize 25% Obelisk_5var.png Obelisk_5var_small.png | |
convert -resize 25% Obelisk_4var.png Obelisk_4var_small.png | |
convert -resize 25% Obelisk_3var.png Obelisk_3var_small.png | |
convert -resize 25% Obelisk_3varbis.png Obelisk_3varbis_small.png | |
convert -resize 25% Obelisk_cross.png Obelisk_cross_small.png | |
convert -resize 25% Obelisk_crosscircle.png Obelisk_crosscircle_small.png | |
# Crop for banner | |
convert Obelisk_allvert_circle.png -gravity Center -crop ${SIZE}x${HALF}+0+0 Obelisk_allvert_circle_crop.png | |
convert Obelisk_allvert.png -gravity Center -crop ${SIZE}x${HALF}+0+0 Obelisk_allvert_crop.png | |
convert -resize 25% Obelisk_allvert_crop.png Obelisk_allvert_crop_small.png | |
# Clean a bit | |
# mv Obelisk_cross_tmp.png Obelisk_cross_clean.png | |
rm obetest?.png | |
rm Obelisk_*_tmp.png | |
echo "All done" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment