diff --git a/ShellScripts/tilemap-add-padding.sh b/ShellScripts/tilemap-add-padding.sh index 95cf5e8..f100dfa 100755 --- a/ShellScripts/tilemap-add-padding.sh +++ b/ShellScripts/tilemap-add-padding.sh @@ -7,8 +7,8 @@ tile_width="$3" # Width of each tile tile_height="$4" # Height of each tile # Get the dimensions of the input image -image_width=$(identify -format "%w" "$input_image") -image_height=$(identify -format "%h" "$input_image") +image_width=$(magick identify -format "%w" "$input_image") +image_height=$(magick identify -format "%h" "$input_image") # Calculate the number of tiles in both directions tiles_across=$((image_width / tile_width)) @@ -18,26 +18,30 @@ tiles_down=$((image_height / tile_height)) new_width=$((tiles_across * (tile_width + 1) - 1)) new_height=$((tiles_down * (tile_height + 1) - 1)) -# Create a blank canvas with a transparent background -convert -size "${new_width}x${new_height}" xc:none blank_canvas.png +# Create a blank canvas with a transparent background and enforce the correct color space +magick -size "${new_width}x${new_height}" xc:none -colorspace sRGB blank_canvas.png # Iterate through each tile in the tilemap for ((y = 0; y < tiles_down; y++)); do - for ((x = 0; x < tiles_across; x++)); do - # Extract the tile from the original image - tile_x=$((x * tile_width)) - tile_y=$((y * tile_height)) - convert "$input_image" -crop "${tile_width}x${tile_height}+$tile_x+$tile_y" "tile_${x}_${y}.png" + for ((x = 0; x < tiles_across; x++)); do + # Extract the tile from the original image + tile_x=$((x * tile_width)) + tile_y=$((y * tile_height)) - # Place the tile on the new image, accounting for the 1-pixel padding - new_tile_x=$((x * (tile_width + 1))) - new_tile_y=$((y * (tile_height + 1))) - composite -geometry "+${new_tile_x}+${new_tile_y}" "tile_${x}_${y}.png" blank_canvas.png blank_canvas.png - done + # Crop the tile while preserving the color space + magick "$input_image" -crop "${tile_width}x${tile_height}+$tile_x+$tile_y" -colorspace sRGB "tile_${x}_${y}.png" + + # Place the tile on the new image, accounting for the 1-pixel padding + new_tile_x=$((x * (tile_width + 1))) + new_tile_y=$((y * (tile_height + 1))) + + # Composite the tile onto the new canvas, ensuring color space is preserved + magick composite -geometry "+${new_tile_x}+${new_tile_y}" "tile_${x}_${y}.png" -colorspace sRGB blank_canvas.png blank_canvas.png + done done -# Save the final image -mv blank_canvas.png "$output_image" +# Save the final image while preserving the color space and transparency +magick blank_canvas.png -colorspace sRGB "$output_image" # Clean up temporary tiles rm tile_*.png