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 |