diff --git a/photo6 b/photo6 new file mode 100755 index 0000000..7504b83 --- /dev/null +++ b/photo6 @@ -0,0 +1,134 @@ +#!/bin/sh +# photo6 - Make 3x2 arranged photo image from one image +# Last modified Fri Sep 17 23:04:23 2004 on firestorm +# Update count: 4 +# $Id$ + +myname=`basename $0` +usage () { + sed -n 2p $0 + cat<<_EOU_ +$myname: + Arguments... + -c Original-Photo.jpg Create center-cropped jpeg files for every + 50-90% range of original JPEG + ���������濴��50��90%���礭�����ڤ��ä� + JPEG�ե������5���������롣 + Photo.jpg Generate 3x2 repeated image named photo6.jpg + Photo.jpg��3x2=6���¤٤� photo6.jpg ������ + -t Foo Change root name of generated file from + photo6 to Foo + ��������ե�����̾�Υ١����� photo6 ���� + Foo���ѹ� + +Requirement: NetPBM, JPEG library(djpeg and cjpeg) + +Sample operation + 1. Take a person's picture. Locate throat in the center. + ��������̿��򻣤�ޤ��礦����������������褦�ˤ͡� + 2a. Crop outsize of person so that new image size ratio becomes + x:y = 42:45 (840x900 for example)... If you feel troubesome + to calculate and operate photo editor, Try 2b. + �ʹ֤��Ĥ�褦�˼̿����濴���� ��:�� �� 42:45 �ˤʤ�褦�� + �ڤ��������Ȥ���840x900����������? �ʤ�2b�ء� + 2b. Try $myname -c photo.jpg + and see generated cropped files. + Select preferable one. photo-80%.jpg for example. + $myname photo.jpg + �äƤ�äƤ����ȽФƤ����ե��������٤� + �����ʤΤ����ܤ���photo-80%.jpg ��������Ȥ��롣 + 3. You'll get photo6.jpg by the following example. + $myname photo-80%.jpg + ���äƤ��� photo6.jpg ��ϻ�����Ѥβ������ФƤ���衣 + 4. �ǥ����ḽ������GO! +_EOU_ + exit 0 +} + +conf=~/.photo6rc +verbose=0 +margin=5 +tmpdir=`mktemp -d /tmp/$myname-XXX` +targetbase=photo6 + +RM=/bin/rm + +finalize () { # ����� ^C ���줿�Ȥ��ˤ��٤����� + $RM -rf $tmpdir # �ä�ɬ�פʤ���н񤫤ʤ� + echo '����Ф�.' + exit 1 +} +trap finalize INT QUIT # ���������ʥ����� + +# �ؿ������Ĥ�Ĥ�� + +abort () { + echo "Error on $*" 1>&2 + finalize +} + +cut () { + cx=`expr $ow / 2` + cy=`expr $oh / 2` + for p in 5 6 7 8 9 10; do + nh=`expr $oh \* $p / 10` + h=`expr $nh - $margin \* 2` + w=`expr $nh \* 42 / 45 - $margin \* 2` + sx=`expr $cx - $w / 2` + sy=`expr $cy - $h / 2` + tf="$base-${p}0%.jpg" + djpeg $file | pnmcut $sx $sy $w $h | pnmmargin -wh $margin | cjpeg > $tf + done +} + +3x2 () { + raw="$tmpdir/$base.pnm" + triple="$tmpdir/$base-3.pnm" + djpeg "$file" > $raw || abort Creating pnm-image of $1 + pnmcat -lr $raw $raw $raw > $triple || abort Making triple of $1 + pnmcat -tb $triple $triple | cjpeg > $targetbase.jpg \ + || abort Making photo6.jpg +} + +while [ "$1" != "" ]; +do + case "$1" in + -v) verbose=1 ;; + -c) cut=1 ;; + -h) usage ;; # -h help���ץ���� + -t) shift; targetbase="$1" ;; + --) shift; break ;; + *) break ;; # -�ǻϤޤ�ʤ���Τ��褿��¨�������� + esac + shift +done + +# ����ǥᥤ�� +# ��������Ĥ�ʤ��ä���usageɽ�����Ƥ����ޤ� +if [ "$1" = "" ]; then + usage +fi + +sline=`rdjpgcom -v "$1"|head -1` +if [ x"$sline" = x"" ]; then + (echo "$1" is not JPEG file. + echo Please use this script for JPEG file) 1>&2 + finalize + # exit 1 +else + ow=`expr "$sline" : ".* \([0-9][0-9]*\)w.*"` + oh=`expr "$sline" : ".* \([0-9][0-9]*\)h.*"` + file="$1" + base=`expr "$1" : "\(.*\)\.jpg"` +fi +echo $ow, $oh 1>&2 + +if [ $cut ]; then + cut "$1" +else + 3x2 +fi + +# �����ޤ� +# $RM -rf $tmpdir +exit 0