Multimédia scriptek III.

batyu küldte be szo, 2010-01-16 17:26 időpontban

Akár az előző scriptet kiegészítendő, akár más esetben, szükség lehet egy bitkép -> jpeg konverterre. Az itt következő image/graphicsmagick alapú script beállítható tömörítéssel és felbontással (dpi) konvertál bármely támogatott formátumot jpeg-be. A felület szintén zenity. Alapesetben rádiólistán választható a minőség, és graphicsmagick-et használ, de a kódban ott a kommentezett sorokban a lehetőség csúszkás beállításra, és imagemagick használatára.
A kód:

#!/bin/bash<br />
#################################################<br />
# Script to convert image files to jpg<br />
# script does not modify the file which you select, it creates a new file.<br />
# It cannot convert a directory but you can select several files.<br />
# </p>
<p>#################################################<br />
version="0.1"<br />
#<br />
		###### Default = English #####<br />
		title="any2jpg "$version""<br />
		pleasesel="Please select at least one file."<br />
		noselec=""$title" convert images to jpg. "$pleasesel""<br />
		nobin="Program Imagemagick/Graphicsmagick is not installed, please install !"<br />
		warning="Warning"<br />
		qsel="Quality (%)"<br />
		exportof="jpeg quality setting"<br />
		Resolution="Resolution"<br />
		Working="Working"<br />
		Done="Done!"<br />
	case $LANG in<br />
		######## Magyarul #########<br />
		hu* )<br />
		title="any2jpg "$version""<br />
		pleasesel="Kérlek válassz ki legalább 1 fájlt!"<br />
		noselec=""$title" export script bitképekből jpg-be."$pleasesel""<br />
		warning="Figyelem"<br />
		nobin="Az Imagemagick/Graphicsmagick nem található, telepítsd!"<br />
		qsel="Minőség (%)"<br />
		exportof="jpeg minőség beállítása"<br />
		Resolution="Felbontás (dpi)"<br />
		Working="Készül a"<br />
		Done="Az exportálás kész!" ;;<br />
	esac</p>
<p>#################################################<br />
#	PROGRAM<br />
######## Test dependency ########<br />
which convert 2>/dev/null<br />
if [ $? != 0 ]<br />
then<br />
	zenity --error --title="$title" --text="$nobin"<br />
	exit 0<br />
fi</p>
<p>#### File selection check ###<br />
if [ $# -eq 0 ]; then<br />
	zenity --error --title="$warning" --text="$noselec"<br />
	exit 1<br />
fi</p>
<p>######## quality settings ########<br />
while [ ! "$quality" ]<br />
do<br />
#	quality=`zenity --scale --title "$title" --text="$qsel" --min-value="60" --max-value="100" --value="90" --step 1`<br />
	quality=`zenity --title "$title" --list --radiolist --column="%" --column="$exportof" FALSE "75" FALSE "80" FALSE "85" TRUE  "90" FALSE "92" FALSE "94" FALSE "96" FALSE "100" --text "$qsel"`<br />
	if  [ $? != 0 ]; then<br />
		exit 1<br />
	fi<br />
	[ $? -ne 0 ] && exit 2<br />
done</p>
<p>######## resolution settings ########<br />
while [ ! "$sample" ]<br />
do<br />
	sample=`zenity --title="$title" --list --radiolist --column="" --column="$Resolution:" FALSE "90x90" FALSE "120x120" TRUE "300x300" FALSE "600x600" FALSE "1200x1200"`<br />
	if  [ $? != 0 ]; then<br />
		exit 1<br />
	fi<br />
	[ $? -ne 0 ] && exit 2<br />
done</p>
<p>######## Export jpg ########<br />
while [ $# -gt 0 ]; do<br />
	picture=$1<br />
	jpg_file=`echo "$picture" | sed 's/\.\w*$/.jpg/'`<br />
#   when use imagemagick, you can uncomment the next line, and comment it another. ##<br />
#	/usr/bin/convert -quality "$quality" -set density "$sample" "$picture"  -background white -flatten jpeg:"$jpg_file" | zenity --progress --text="$Working $picture" --percentage=0 --auto-close && zenity --info --text="$Done"<br />
	/usr/bin/gm convert -quality "$quality" -set density "$sample" "$picture"  -background white -flatten jpeg:"$jpg_file" | zenity --progress --text="$Working $picture" --pulsate --auto-close && zenity --info --text="$Done"<br />
	shift<br />
done<br />