mirror of
https://github.com/openwrt/packages.git
synced 2026-10-12 05:57:04 +04:00
Exercise more gm subcommands and codecs on top of the existing PNG/JPEG, resize, pixel, draw and composite checks: TIFF round-trip, PPM and GIF encoders, crop, 90-degree rotate, horizontal append and in-place mogrify. Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
74 lines
2.7 KiB
Bash
74 lines
2.7 KiB
Bash
#!/bin/sh
|
|
|
|
case "$1" in
|
|
graphicsmagick)
|
|
# Version check
|
|
gm version | grep -F "$2"
|
|
|
|
# Create a small test image
|
|
gm convert -size 32x32 xc:white /tmp/gm-white.png
|
|
[ -f /tmp/gm-white.png ] || { echo "FAIL: PNG creation"; exit 1; }
|
|
|
|
# Identify the created image; verify format and dimensions
|
|
gm identify /tmp/gm-white.png | grep -E "PNG.*32x32"
|
|
|
|
# Convert to JPEG
|
|
gm convert /tmp/gm-white.png /tmp/gm-white.jpg
|
|
gm identify /tmp/gm-white.jpg | grep "JPEG"
|
|
|
|
# Resize: create a 64x64 image, resize to 16x16, confirm dimensions
|
|
gm convert -size 64x64 xc:blue -resize 16x16! /tmp/gm-small.png
|
|
gm identify /tmp/gm-small.png | grep -E "PNG.*16x16"
|
|
|
|
# Color: create a 1x1 red pixel, sample it back
|
|
gm convert -size 1x1 xc:red /tmp/gm-red.png
|
|
gm convert /tmp/gm-red.png -format '%[pixel:p{0,0}]' info: | grep -iE "red|ff0000"
|
|
|
|
# Draw: add text/annotate (exercises the font/draw engine)
|
|
gm convert -size 64x16 xc:white -font Helvetica -pointsize 10 \
|
|
-draw "text 2,12 'gm'" /tmp/gm-text.png 2>/dev/null || \
|
|
gm convert -size 64x16 xc:white \
|
|
-draw "text 2,12 'gm'" /tmp/gm-text.png
|
|
gm identify /tmp/gm-text.png | grep "PNG"
|
|
|
|
# Composite: overlay one image on another
|
|
gm composite -compose Over /tmp/gm-red.png /tmp/gm-white.png /tmp/gm-composite.png
|
|
gm identify /tmp/gm-composite.png | grep "PNG"
|
|
|
|
# TIFF round-trip: encode, then decode back to PNG at the same geometry
|
|
gm convert /tmp/gm-white.png /tmp/gm-white.tiff
|
|
gm identify /tmp/gm-white.tiff | grep "TIFF"
|
|
gm convert /tmp/gm-white.tiff /tmp/gm-back.png
|
|
gm identify /tmp/gm-back.png | grep -E "PNG.*32x32"
|
|
|
|
# PPM and GIF encoders (built-in codecs)
|
|
gm convert /tmp/gm-white.png /tmp/gm-white.ppm
|
|
gm identify /tmp/gm-white.ppm | grep -E "PNM|PPM"
|
|
gm convert /tmp/gm-white.png /tmp/gm-white.gif
|
|
gm identify /tmp/gm-white.gif | grep "GIF"
|
|
|
|
# Crop a sub-region and confirm the new geometry
|
|
gm convert /tmp/gm-white.png -crop 10x10+0+0 /tmp/gm-crop.png
|
|
gm identify /tmp/gm-crop.png | grep -E "PNG.*10x10"
|
|
|
|
# Rotate 90 degrees swaps width and height
|
|
gm convert -size 40x20 xc:white -rotate 90 /tmp/gm-rot.png
|
|
gm identify /tmp/gm-rot.png | grep -E "PNG.*20x40"
|
|
|
|
# Horizontal append of two images
|
|
gm convert /tmp/gm-white.png /tmp/gm-small.png +append /tmp/gm-app.png
|
|
gm identify /tmp/gm-app.png | grep "PNG"
|
|
|
|
# mogrify rewrites the file in place
|
|
cp /tmp/gm-white.png /tmp/gm-mog.png
|
|
gm mogrify -resize 20x20! /tmp/gm-mog.png
|
|
gm identify /tmp/gm-mog.png | grep -E "PNG.*20x20"
|
|
|
|
rm -f /tmp/gm-white.png /tmp/gm-white.jpg /tmp/gm-small.png \
|
|
/tmp/gm-red.png /tmp/gm-text.png /tmp/gm-composite.png \
|
|
/tmp/gm-white.tiff /tmp/gm-back.png /tmp/gm-white.ppm \
|
|
/tmp/gm-white.gif /tmp/gm-crop.png /tmp/gm-rot.png /tmp/gm-app.png \
|
|
/tmp/gm-mog.png
|
|
;;
|
|
esac
|