Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 49 KiB |
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 554 B |
Before Width: | Height: | Size: 89 KiB After Width: | Height: | Size: 44 KiB |
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 100 KiB |
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 48 KiB |
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 8.4 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 8.5 KiB |
Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 49 KiB |
@ -0,0 +1,188 @@ |
|||||||
|
#!/bin/bash |
||||||
|
# |
||||||
|
# Developed by Fred Weinhaus 5/8/2008 .......... revised 4/25/2015 |
||||||
|
# |
||||||
|
# ------------------------------------------------------------------------------ |
||||||
|
# |
||||||
|
# Licensing: |
||||||
|
# |
||||||
|
# Copyright © Fred Weinhaus |
||||||
|
# |
||||||
|
# My scripts are available free of charge for non-commercial use, ONLY. |
||||||
|
# |
||||||
|
# For use of my scripts in commercial (for-profit) environments or |
||||||
|
# non-free applications, please contact me (Fred Weinhaus) for |
||||||
|
# licensing arrangements. My email address is fmw at alink dot net. |
||||||
|
# |
||||||
|
# If you: 1) redistribute, 2) incorporate any of these scripts into other |
||||||
|
# free applications or 3) reprogram them in another scripting language, |
||||||
|
# then you must contact me for permission, especially if the result might |
||||||
|
# be used in a commercial or for-profit environment. |
||||||
|
# |
||||||
|
# My scripts are also subject, in a subordinate manner, to the ImageMagick |
||||||
|
# license, which can be found at: http://www.imagemagick.org/script/license.php |
||||||
|
# |
||||||
|
# ------------------------------------------------------------------------------ |
||||||
|
# |
||||||
|
#### |
||||||
|
# |
||||||
|
# USAGE: pixelize [-s size] [-m mode] infile outfile |
||||||
|
# USAGE: pixelize [-h or -help] |
||||||
|
# |
||||||
|
# OPTIONS: |
||||||
|
# |
||||||
|
# -s size pixelization size; size>0; default=3 |
||||||
|
# -m mode mode of minimizing; 1=resize; 2=sample; default=1 |
||||||
|
# |
||||||
|
### |
||||||
|
# |
||||||
|
# NAME: PIXELIZE |
||||||
|
# |
||||||
|
# PURPOSE: To create a pixelized or blocky effect in an image. |
||||||
|
# |
||||||
|
# DESCRIPTION: PIXELIZE creates a pixelized or blocky effect in an |
||||||
|
# image where more pixelization (larger sizes) create larger blocky |
||||||
|
# effects. |
||||||
|
# |
||||||
|
# OPTIONS: |
||||||
|
# |
||||||
|
# -s size ... SIZE is the pixelization (block) size. Values are greater |
||||||
|
# than 0. The default is 3. |
||||||
|
# |
||||||
|
# -m mode ... MODE is the mode of minimizing. Choices are 1 for -resize |
||||||
|
# and 2 for -sample. The default=1 |
||||||
|
# |
||||||
|
# CAVEAT: No guarantee that this script will work on all platforms, |
||||||
|
# nor that trapping of inconsistent parameters is complete and |
||||||
|
# foolproof. Use At Your Own Risk. |
||||||
|
# |
||||||
|
###### |
||||||
|
# |
||||||
|
|
||||||
|
# set default values |
||||||
|
size=3 |
||||||
|
mode=1 |
||||||
|
|
||||||
|
# set directory for temporary files |
||||||
|
dir="." # suggestions are dir="." or dir="/tmp" |
||||||
|
|
||||||
|
# set up functions to report Usage and Usage with Description |
||||||
|
PROGNAME=`type $0 | awk '{print $3}'` # search for executable on path |
||||||
|
PROGDIR=`dirname $PROGNAME` # extract directory of program |
||||||
|
PROGNAME=`basename $PROGNAME` # base name of program |
||||||
|
usage1() |
||||||
|
{ |
||||||
|
echo >&2 "" |
||||||
|
echo >&2 "$PROGNAME:" "$@" |
||||||
|
sed >&2 -e '1,/^####/d; /^###/g; /^#/!q; s/^#//; s/^ //; 4,$p' "$PROGDIR/$PROGNAME" |
||||||
|
} |
||||||
|
usage2() |
||||||
|
{ |
||||||
|
echo >&2 "" |
||||||
|
echo >&2 "$PROGNAME:" "$@" |
||||||
|
sed >&2 -e '1,/^####/d; /^######/g; /^#/!q; s/^#*//; s/^ //; 4,$p' "$PROGDIR/$PROGNAME" |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
# function to report error messages |
||||||
|
errMsg() |
||||||
|
{ |
||||||
|
echo "" |
||||||
|
echo $1 |
||||||
|
echo "" |
||||||
|
usage1 |
||||||
|
exit 1 |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
# function to test for minus at start of value of second part of option 1 or 2 |
||||||
|
checkMinus() |
||||||
|
{ |
||||||
|
test=`echo "$1" | grep -c '^-.*$'` # returns 1 if match; 0 otherwise |
||||||
|
[ $test -eq 1 ] && errMsg "$errorMsg" |
||||||
|
} |
||||||
|
|
||||||
|
# test for correct number of arguments and get values |
||||||
|
if [ $# -eq 0 ] |
||||||
|
then |
||||||
|
# help information |
||||||
|
echo "" |
||||||
|
usage2 |
||||||
|
exit 0 |
||||||
|
elif [ $# -gt 6 ] |
||||||
|
then |
||||||
|
errMsg "--- TOO MANY ARGUMENTS WERE PROVIDED ---" |
||||||
|
else |
||||||
|
while [ $# -gt 0 ] |
||||||
|
do |
||||||
|
# get parameter values |
||||||
|
case "$1" in |
||||||
|
-h|-help) # help information |
||||||
|
echo "" |
||||||
|
usage2 |
||||||
|
exit 0 |
||||||
|
;; |
||||||
|
-s) # get size |
||||||
|
shift # to get the next parameter - scale |
||||||
|
# test if parameter starts with minus sign |
||||||
|
errorMsg="--- INVALID SIZE SPECIFICATION ---" |
||||||
|
checkMinus "$1" |
||||||
|
size=`expr "$1" : '\([0-9]*\)'` |
||||||
|
[ "$size" = "" ] && errMsg "SIZE=$size MUST BE AN INTEGER" |
||||||
|
sizetest=`echo "$size <= 0" | bc` |
||||||
|
[ $sizetest -eq 1 ] && errMsg "--- SIZE=$size MUST BE A POSITIVE INTEGER ---" |
||||||
|
;; |
||||||
|
-m) # get mode |
||||||
|
shift # to get the next parameter - mode |
||||||
|
# test if parameter starts with minus sign |
||||||
|
errorMsg="--- INVALID MODE SPECIFICATION ---" |
||||||
|
checkMinus "$1" |
||||||
|
mode=`expr "$1" : '\([0-9]*\)'` |
||||||
|
[ "$mode" = "" ] && errMsg "MODE=$mode MUST BE AN INTEGER" |
||||||
|
[ $mode -ne 1 -a $mode -ne 2 ] && errMsg "--- MODE=$mode MUST BE EITHER 1 OR 2 ---" |
||||||
|
;; |
||||||
|
-) # STDIN and end of arguments |
||||||
|
break |
||||||
|
;; |
||||||
|
-*) # any other - argument |
||||||
|
errMsg "--- UNKNOWN OPTION ---" |
||||||
|
;; |
||||||
|
*) # end of arguments |
||||||
|
break |
||||||
|
;; |
||||||
|
esac |
||||||
|
shift # next option |
||||||
|
done |
||||||
|
# |
||||||
|
# get infile and outfile |
||||||
|
infile="$1" |
||||||
|
outfile="$2" |
||||||
|
fi |
||||||
|
|
||||||
|
# test that infile provided |
||||||
|
[ "$infile" = "" ] && errMsg "NO INPUT FILE SPECIFIED" |
||||||
|
|
||||||
|
# test that outfile provided |
||||||
|
[ "$outfile" = "" ] && errMsg "NO OUTPUT FILE SPECIFIED" |
||||||
|
|
||||||
|
|
||||||
|
# test if image an ordinary, readable and non-zero size |
||||||
|
if [ -f $infile -a -r $infile -a -s $infile ] |
||||||
|
then |
||||||
|
: 'Do Nothing' |
||||||
|
else |
||||||
|
errMsg "--- FILE $infile DOES NOT EXIST OR IS NOT AN ORDINARY FILE, NOT READABLE OR HAS ZERO SIZE ---" |
||||||
|
fi |
||||||
|
|
||||||
|
# get parameters |
||||||
|
w=`convert $infile -format "%[fx:w]" info:` |
||||||
|
h=`convert $infile -format "%[fx:h]" info:` |
||||||
|
minify=`convert xc: -format "%[fx:100/$size]" info:` |
||||||
|
|
||||||
|
# process image |
||||||
|
if [ $mode -eq 1 ]; then |
||||||
|
convert $infile -resize $minify% -scale ${w}x${h}! "$outfile" |
||||||
|
elif [ $mode -eq 2 ]; then |
||||||
|
convert $infile -sample $minify% -scale ${w}x${h}! "$outfile" |
||||||
|
fi |
||||||
|
exit 0 |