#626 Le 05/06/2013, à 16:51
- ragamatrix
Re : [Conky] Alternative à weather.com (3)
j'ai bien peur de ne pas pouvoir t'aider en perl.
tu devrais poster ta demande dans la section développeur du forum.
J'ai commenté les lignes concernant la création d'image et cela à l'air de fonctionner...
#my @images = ( 'xplanetemp.png', 'xplanetemp2.png' );
et
#system( "xplanet -num_times 1 -output $root$images[$image] -geometry $screen -longitude $longitude -latitude $latitude -projection $projection -config $root$config" );
#system( "gconftool-2 -t str -s /desktop/gnome/background/picture_filename $root$images[$image]" );
#$image = 1 - $image;
#unlink( "$root$images[$image]" );
sleep( $update );
}
Hors ligne
#627 Le 05/06/2013, à 16:58
- ragamatrix
Re : [Conky] Alternative à weather.com (3)
Didier-T a écrit :j'ai bien peur de ne pas pouvoir t'aider en perl.
tu devrais poster ta demande dans la section développeur du forum.J'ai commenté les lignes concernant la création d'image et cela à l'air de fonctionner...
#my @images = ( 'xplanetemp.png', 'xplanetemp2.png' );
et
#system( "xplanet -num_times 1 -output $root$images[$image] -geometry $screen -longitude $longitude -latitude $latitude -projection $projection -config $root$config" ); #system( "gconftool-2 -t str -s /desktop/gnome/background/picture_filename $root$images[$image]" ); #$image = 1 - $image; #unlink( "$root$images[$image]" ); sleep( $update ); }
En fait non ; je vais voir plus tard pour poster ça vers "developpeur"
Merci quand même.
Hors ligne
#628 Le 07/06/2013, à 09:05
- ragamatrix
Re : [Conky] Alternative à weather.com (3)
EDIT: J'ai trouvé la solution je la mets en bas si ça interesse... J'éspère que je ne t'ai pas réveillé
jpdipsy es-tu là ?
Salut;
J'aurais besoin d'un ptit coup de main convert...
J'arrive à détourer deux cercles en créant des masques et composer les deux images que je souhaite mais je voudrais faire un seul masque créant une seule image...
Illustration:
masque 1
convert -size 1280x720 xc:none -fill blue -draw 'translate 319,359 circle 0,0 286,0' -alpha extract ~/globmask1.png
masque 2
convert -size 1280x720 xc:none -fill blue -draw 'translate 956,359 circle 0,0 286,0' -alpha extract ~/globmask2.png
globe 1
convert ~/xplanetemp.png ~/globmask1.png -alpha off -compose CopyOpacity -composite ~/globus1.png
globe 2
convert ~/xplanetemp.png ~/globmask2.png -alpha off -compose CopyOpacity -composite ~/globus2.png
La solution doit sûrement être simple mais je bloque ici...
Solution:
convert -size 1280x720 xc:none -fill blue -draw 'translate 319,359 circle 0,0 286,0' ~/globmask1.png
convert ~/globmask1.png -fill blue -draw 'translate 956,359 circle 0,0 286,0' -alpha extract ~/globmask2.png
convert ~/xplanetemp.png ~/globmask2.png -alpha off -compose CopyOpacity -composite ~/globusfinal.png
Dernière modification par ragamatrix (Le 07/06/2013, à 09:23)
Hors ligne
#629 Le 11/06/2013, à 13:05
- ragamatrix
Re : [Conky] Alternative à weather.com (3)
Je viens de découvrir une fonction intéressante de xplanet; pouvant générer les planètes avec la transparence (à condition que les images soient en .png) option -transpng
Les images crées par xplanet ensuite affichées avec le script de jpdipsy (rotation, taille transparence...)
Exemple avec saturne qui aurait été un peu difficile à détourer pour avoir un fond transparent (anneaux)...
Hors ligne
#630 Le 18/06/2013, à 06:10
- Didier-T
Re : [Conky] Alternative à weather.com (3)
bonjour a tous,
sa faisait longtemps qu'il n'y avait pas eut de modification sur accuweather.
donc changement de version, recmeteo.py v1.29 et meteo2.lua 1.09
A+
Hors ligne
#631 Le 18/06/2013, à 07:47
- Yvance77
Re : [Conky] Alternative à weather.com (3)
donc changement de version, recmeteo.py v1.29 et meteo2.lua 1.09
Bonjour,
Et qu'est-ce que cela implique ? On doit faire le changement en réinstallant ? Est-ce automatique ?
Merci de vos précisions
Cordialement
A trop vouloir faire de l'économie un idéal, nous faisons l'économie de l'Idéal !
Manjaro 20.01 - Mate 64 bits
CM : MSI B550 Tomahawk -- Proc : Ryzen 3600 6 coeurs -- CG : ATI Radeon RX550 -- RAM : Kingstone DDR4
Hors ligne
#632 Le 18/06/2013, à 09:11
- ragamatrix
Re : [Conky] Alternative à weather.com (3)
@Didier-T
Salut,
Je crois que tu as oublié de mettre 1.29 à la place de 1.28 après la mise à jour de ta version où bien ?recmeteo.py...
Hors ligne
#633 Le 18/06/2013, à 10:39
- Didier-T
Re : [Conky] Alternative à weather.com (3)
@ ragamatrix,
bien vue, en effet, j'ai fait sa rapidement ce matin, et les deux fichiers ne sont pas a jours, mais le celui qui posait problèmes (meteo2.lua) est bien la version corrigée.
pour recmeteo.py, il s'agit d'une correction d'écriture (surtout utile pour les vielle machine)
@ Yvance77,
peut importe la méthode employée, il faut simplement modifier les fichiers recmeto.py ainsi que meteo2.lua.
après soit tu décompresse l'archive et fais la manip a la main, soit tu relance le script d'installation.
Je ferais un script de mise a jour pour l'avenir.
Dernière modification par Didier-T (Le 18/06/2013, à 10:40)
Hors ligne
#634 Le 18/06/2013, à 10:47
- ti_tux
Re : [Conky] Alternative à weather.com (3)
Didier la dernière version de meteo2.lua c'est la 1.08 ou 1.09 ? dans ton archive c'est toujours la 1.08
Venez traduire KDE (doc, appli, pages web) en français http://fr.l10n.kde.org/
Hors ligne
#635 Le 18/06/2013, à 10:52
- Didier-T
Re : [Conky] Alternative à weather.com (3)
Il faut croire que je perd la boulle.
Bon je renverrai l'archive ce soir.
Dernière modification par Didier-T (Le 18/06/2013, à 10:53)
Hors ligne
#636 Le 18/06/2013, à 12:37
- Yvance77
Re : [Conky] Alternative à weather.com (3)
Didier T,
Merci pour la précision. Par contre, un petit complément si vous permettez, le conky « meteo6jours » se trouvant sur l'introduction de ce fil et qui avait retenu votre attention, fait-il aussi l'objet d'une mise à jour. En d'autres termes dois-je procéder aussi à un nouvel ./install.sh ?
Merci
Dernière modification par Yvance77 (Le 18/06/2013, à 12:38)
A trop vouloir faire de l'économie un idéal, nous faisons l'économie de l'Idéal !
Manjaro 20.01 - Mate 64 bits
CM : MSI B550 Tomahawk -- Proc : Ryzen 3600 6 coeurs -- CG : ATI Radeon RX550 -- RAM : Kingstone DDR4
Hors ligne
#637 Le 18/06/2013, à 16:21
- Didier-T
Re : [Conky] Alternative à weather.com (3)
@ Yvance77,
non, il n'y a que le pack de base qui contiens les scripts, il est donc le seul à mettre à jour
Hors ligne
#638 Le 18/06/2013, à 20:32
- Didier-T
Re : [Conky] Alternative à weather.com (3)
j'ai trouvé pourquoi la mise a jour n'était pas passé.
J'ai oublié de réinstaller Dropbox, du coup sa synchronise moins bien.
Hors ligne
#639 Le 18/06/2013, à 21:00
- ti_tux
Re : [Conky] Alternative à weather.com (3)
Forcément ça marchait beaucoup moins bien... En effet ça va mieux maintenant ! Merci à toi !
Venez traduire KDE (doc, appli, pages web) en français http://fr.l10n.kde.org/
Hors ligne
#640 Le 18/06/2013, à 21:04
- Didier-T
Re : [Conky] Alternative à weather.com (3)
Et oui, snif...
je viens de refaire l'archive, et y ai ajouté le script Maj.sh.
je pense que sa fera plaisir a Yvance77... et certainement à d'autres...
la premier post est modifié en conséquence.
Hors ligne
#641 Le 18/06/2013, à 21:07
- michel ruiz
Re : [Conky] Alternative à weather.com (3)
Je suis passé au bon moment
J'ai remplacé mes deux fichier et ça refonctionne nickel-chrome
Merci Didier-T (ainsi qu'aux autres contributeurs)
Hors ligne
#642 Le 19/06/2013, à 05:03
- Didier-T
Re : [Conky] Alternative à weather.com (3)
aller une petite mise a jour.
ce matin pas d'alerte, et bug du meteo2.lua (lié a l'ajout d'un retour charriot dans les conditions courantes)
mise a jour recmeteo.py 1.30
Hors ligne
#643 Le 19/06/2013, à 06:25
- fabsail
Re : [Conky] Alternative à weather.com (3)
aller une petite mise a jour.
Merci pour toutes ces mises à jour très réactives et pour le script de MAJ qui est le bienvenu.
Sinon, quand est-ce que tu dors ?
Hors ligne
#644 Le 19/06/2013, à 06:59
- Didier-T
Re : [Conky] Alternative à weather.com (3)
la nuit
Hors ligne
#645 Le 19/06/2013, à 07:03
- franz256
Re : [Conky] Alternative à weather.com (3)
Bonjour,
Après changement de 1.08 vers 1.09 tout fonctionne. Merci Didier-T
Ubuntu 13.04-64 gnome-shell 3.6.1.3
Hors ligne
#646 Le 19/06/2013, à 07:08
- Yvance77
Re : [Conky] Alternative à weather.com (3)
je pense que sa fera plaisir a Yvance77... et certainement à d'autres....
Effectivement et merci pour cette belle réactivité.
A trop vouloir faire de l'économie un idéal, nous faisons l'économie de l'Idéal !
Manjaro 20.01 - Mate 64 bits
CM : MSI B550 Tomahawk -- Proc : Ryzen 3600 6 coeurs -- CG : ATI Radeon RX550 -- RAM : Kingstone DDR4
Hors ligne
#647 Le 19/06/2013, à 13:03
- ragamatrix
Re : [Conky] Alternative à weather.com (3)
Hors ligne
#648 Le 19/06/2013, à 15:49
- cabrito
Re : [Conky] Alternative à weather.com (3)
Bonjour,
juste un petit commentaire pour signaler que le script « Maj.sh » du pack de base (pack meteo2.lua v1.09 et recmeteo.py v1.30) est défectueux.
Il manque simplement les instructions « echo » au début des lignes 7 et 9 :
01 #!/bin/bash
02 # Par @ Didier-T - Forum Ubuntu.fr
03 # Script de mise a jour
04
05 tar xzf meteo.tar.gz -C ~ --wildcards --no-anchored '.conky/conky-meteo/meteo_lua_2'
06 if [ $? = "0" ];then
07 "Mise a jour effectuée"
08 else
09 "Mise a jour non effectuée"
10 exit 1
11 fi
12
13 exit 0
Voilà, à bientôt.
Dernière modification par cabrito (Le 19/06/2013, à 16:12)
Hors ligne
#649 Le 19/06/2013, à 15:49
- ragamatrix
Re : [Conky] Alternative à weather.com (3)
ça fonctionne, alors voici le script que vous pouvez appeler dans conky dans ce genre là (exemple):
${texeci 1200 /home/YOU/.conky/script/03-carte-seismes.sh}
${image /tmp/carte-seismes.png -p 16,610 -f 60}
03-carte-seismes.sh:
#!/bin/bash
# Crée par JPDipsy et modifié par ragamatrix
# script de recupération carte-seismes "euromed" http://www.emsc.eu/#2
# et mise en forme polaroïd imagemagick et pagecurl doivent être installés
# ce script et le script pagecurl doivent être dans le même rep.
#----------------------------------------------------------------------------------
path=`dirname $0`
if [ -z "$1" ];then
reptemp="/tmp"
else
reptemp="$1"
fi
heuremodif=`date +%H`; minmodif=`date +%M`
# ce que vous voulez
fonte=Times-Bold
nomimage=carte-seismes
tailleimage=60 # ceci est en pourcentage
tailledecoupe=250x200
libelle="Relevé sismique à: "
#----------------------------------------------------------------------------------
# recup image sat
wget -q -O $reptemp/$nomimage.jpg "http://static2.emsc.eu/Images/map_zoom/WEBMAPS/24H/TEUROMED.24hours.jpg?dt=1371641233"
function mise_en_forme_image {
convert $reptemp/$nomimage.png -background white -bordercolor white -border 5% -gravity South -splice 0x22 -density 150 \
-font $fonte -pointsize 10 -annotate 0x10+0+10 "$libelle $heuremodif h $minmodif" $reptemp/$nomimage.png
#creation coin et masque à l'aide du script pagecurl
convert -size 128x128 xc: miff:- | $path/pagecurl -m doublegrad -a 60 -e 0.3 -i $reptemp/"pagecurl" - null:
#composition image finale
convert $reptemp/$nomimage.png -background none -alpha set -gravity SouthEast -define compose:outside-overlay=false \
$reptemp/pagecurl_overlay.png -composite $reptemp/pagecurl_mask.png -compose DstIn -composite -virtual-pixel background \
+distort ScaleRotateTranslate 90 +repage $reptemp/$nomimage.png
convert -size 256x32 xc: miff:- | $path/pagecurl -m doublegrad -a 5 -e 0.5 -i $reptemp/"pagecurl" - null:
convert $reptemp/$nomimage.png -background none -alpha set -gravity SouthEast -define compose:outside-overlay=false \
$reptemp/pagecurl_overlay.png -composite $reptemp/pagecurl_mask.png -compose DstIn -composite -virtual-pixel background \
+distort ScaleRotateTranslate -105 +repage -resize $tailleimage% $reptemp/$nomimage.png
rm $reptemp/pagecurl_overlay.png ; rm $reptemp/pagecurl_mask.png
}
function ombre {
convert $reptemp/$nomimage.png -background black \( +clone -shadow 60x4+14+14 \) +swap -background none -flatten $reptemp/$nomimage.png
}
if [[ -e $reptemp/$nomimage.jpg ]] ; then
# decoupage de la partie utile
convert $reptemp/$nomimage.jpg -filter Lanczos -crop $tailledecoupe+150+130\! -resize 200% $reptemp/$nomimage.png
mise_en_forme_image ; ombre ; #rm $reptemp/$nomimage.gif
else
# comme ça votre conky aura toujours une image au cas ou
convert -size $tailledecoupe plasma: $reptemp/$nomimage.png
libelle="Désolé pas d'image radar à "
mise_en_forme_image ; ombre
fi
pagecurl qui doit être dans le même dossier que le précédent script:
#!/bin/bash
#
# USAGE: pagecurl [options] infile outfile
#
# pagecurl - Applies a pagecurl effect to the lower right corner of an image.
#
# This program generates a pagecurl effect to the lower right corner of an
# image. The apex of the curl is nominally in the upper right corner of the
# image, but can be adjusted. The curl is always right to left. The curl can
# be shaded and/or colored. The removed area can be colored or transparent.
# Note that this is a 2D simulation and not a true 3D effect.
#
# OPTIONS:
#
# -a amount amount of pagecurl expressed as percent of image
# width; integer>=5; default=50
# -m mode mode of shading curl; plain, grad or doublegrad;
# default=grad
# -c color color to apply to curl; any valid IM color;
# default=white
# -b bgcolor background color to apply to image where curled away;
# any valid IM color; default=none (transparent)
# -e ellipticity curl flattening from circle to ellipse;
# 0<=float<1; default=0 for circle; recommended value
# other 0 is 0.5 for ellipse shape
# -x xcoord x coordinate for apex of curl;
# default=right image edge
# -y ycoord y coordinate for apex of curl;
# default=upper image edge
# -g gcontrast contrast adjustment for mode=grad; 0<=integer<=100;
# increases contrast only; default=15
# -d dcontrast contrast adjustment for mode=doublegrad;
# -100<=integer<=100; positive increase contrast;
# negative decreases contrast; default=0
# -i prefix generate and save the overlay and masking images
# in PNG format using the filename prefix provided.
#
# -help output this documentation
#
###
#
# -a amount ... AMOUNT of pagecurl expressed as percent of image width. Values
# are in range integer>=5. The default=50
#
# -m mode ... MODE shading on the curl. Choices are: plain (or p), grad (or g)
# for gradient, or doublegrad (or d) for double gradient. Default=grad.
#
# -c color ... COLOR is the color to apply to curl. Any valid IM color is
# allowed. The default=white.
#
# -b bgcolor ... BGCOLOR is the color to apply to curled away part of the image.
# Any valid IM color is allowed. The default=none for transparent.
#
# -e ellipticity ... ELLIPTICITY is the amount of curl flattening from a circle
# to an ellipse. Values are in range 0<=float<1. The default=0 for circle.
# Recommended value other 0 is 0.5 for ellipse shape.
#
# -x xcoord ... XCOORD is the X coordinate for the apex of the curl. Values
# are 0<integers<width. The default is the right edge of the image.
#
# -y ycoord ... YCOORD is the Y coordinate for the apex of the curl. Values
# are integers. The default is the upper edge of the image.
#
# -g gcontrast ... GCONTRAST is the contrast adjustment for mode=grad. Values
# are in range 0<=integer<=100. This increases contrast only. The default=15
#
# -d dcontrast ... DCONTRAST is the contrast adjustment for mode=doublegrad.
# Values are in range -100<=integer<=100. Positive values increase contrast.
# Negative values decrease contrast. The default=0
#
# -i prefix ... save the overlay and masking images generated using the
# prefix/path provided. Filename created are "{prefix}_overlay.png" and
# "{prefix}_mask.png".
#
#
# Thanks to Anthony Thyssen for critiqing the original version and for
# several useful suggestions for improvement.
#
# 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.
#
######
#
# Original script by Fred Weinhaus, 23 May 2010
# Re-developed by Anthony Thyssen, 4 December 2010
#
# set default values
amount=50 # approx percentage of curl of image width; 5 to 100
mode="grad" # plain, grad, doublegrad
color="white" # color for plain or gradients
bgcolor="none" # background color
ellipticity=0 # how circular the curl is 0 circle 0.5 is elliptical
xcoord="" # apex of cone; default=width (UL corner)
ycoord="" # apex of cone; default=0 (UL corner)
gcontrast=15 # gradient contrast values; non-neg interger percent
dcontrast=0 # doublegrad contrast values; pos or neg integer percent
swidth=2 # strokewidth; thickness of curl
# 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 -n '/^###/q; /^#/!q; s/^#//; s/^ //; 3,$p' \
"$PROGDIR/$PROGNAME"
exit 1
}
usage2() {
echo >&2 ""
echo >&2 "$PROGNAME:" "$@"
sed >&2 -n '/^######/q; /^#/!q; s/^#*//; s/^ //; 3,$p' \
"$PROGDIR/$PROGNAME"
exit 0
}
# function to report error messages
errMsg() {
echo ""
echo $1
echo ""
usage1
}
# 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
echo ""
usage2
elif [ $# -gt 20 ]; then
errMsg "--- TOO MANY ARGUMENTS WERE PROVIDED ---"
fi
while [ $# -gt 0 ]
do
# get parameter values
case "$1" in
-help) # help information
echo ""
usage2
exit 0
;;
-a) # get amount
shift # to get the next parameter
# test if parameter starts with minus sign
errorMsg="--- INVALID AMOUNT SPECIFICATION ---"
checkMinus "$1"
amount=`expr "$1" : '\([0-9]*\)'`
[ "$amount" = "" ] && errMsg "--- AMOUNT=$amount MUST BE A NON-NEGATIVE INTEGER (with no sign) ---"
test1=`echo "$amount < 5" | bc`
[ $test1 -eq 1 ] && errMsg "--- AMOUNT=$amount MUST BE AN GREATER THAN 4 ---"
;;
-m) # get mode
shift # to get the next parameter
# test if parameter starts with minus sign
errorMsg="--- INVALID MODE SPECIFICATION ---"
checkMinus "$1"
mode=`echo "$1" | tr '[A-Z]' '[a-z]'`
case "$mode" in
plain|p) mode=plain ;;
grad|g) mode=grad ;;
doublegrad|d) mode=doublegrad ;;
*) errMsg "--- MODE=$mode IS AN INVALID VALUE ---" ;;
esac
;;
-c) # get color
shift # to get the next parameter
# test if parameter starts with minus sign
errorMsg="--- INVALID COLOR SPECIFICATION ---"
checkMinus "$1"
color="$1"
;;
-b) # get bgcolor
shift # to get the next parameter
# test if parameter starts with minus sign
errorMsg="--- INVALID BGCOLOR SPECIFICATION ---"
checkMinus "$1"
bgcolor="$1"
;;
-e) # get ellipticity
shift # to get the next parameter
# test if parameter starts with minus sign
errorMsg="--- INVALID ELLIPTICITY SPECIFICATION ---"
checkMinus "$1"
ellipticity=`expr "$1" : '\([.0-9]*\)'`
[ "$ellipticity" = "" ] && errMsg "--- ELLIPTICITY=$arc MUST BE A NON-NEGATIVE FLOAT (with no sign) ---"
test1=`echo "$ellipticity < 0" | bc`
test2=`echo "$ellipticity >= 1" | bc`
[ $test1 -eq 1 -o $test2 -eq 1 ] && errMsg "--- ELLIPTICITY=$arc MUST BE A FLOAT GREATER THAN OR EQUAL 0 AND LESS THAN 1 ---"
;;
-x) # get xcoord
shift # to get the next parameter
# test if parameter starts with minus sign
errorMsg="--- INVALID XCOORD SPECIFICATION ---"
checkMinus "$1"
xcoord=`expr "$1" : '\([0-9]*\)'`
[ "$xcoord" = "" ] && errMsg "--- XCOORD=$xcoord MUST BE A NON-NEGATIVE INTEGER ---"
;;
-y) # get ycoord
shift # to get the next parameter
# test if parameter starts with minus sign
#errorMsg="--- INVALID YCOORD SPECIFICATION ---"
#checkMinus "$1"
ycoord=`expr "$1" : '\([-0-9]*\)'`
[ "$ycoord" = "" ] && errMsg "--- YCOORD=$ycoord MUST BE AN INTEGER ---"
;;
-g) # get gcontrast
shift # to get the next parameter
# test if parameter starts with minus sign
errorMsg="--- INVALID GCONTRAST SPECIFICATION ---"
checkMinus "$1"
gcontrast=`expr "$1" : '\([0-9]*\)'`
[ "$gcontrast" = "" ] && errMsg "--- GCONTRAST=$gcontrast MUST BE A NON-NEGATIVE INTEGER (with no sign) ---"
test1=`echo "$gcontrast < 0" | bc`
test2=`echo "$gcontrast > 100" | bc`
[ $test1 -eq 1 -o $test2 -eq 1 ] && errMsg "--- GCONTRAST=$gcontrast MUST BE AN INTEGER BETWEEN 0 AND 100 ---"
;;
-d) # get dcontrast
shift # to get the next parameter
# test if parameter starts with minus sign
#errorMsg="--- INVALID DCONTRAST SPECIFICATION ---"
#checkMinus "$1"
dcontrast=`expr "$1" : '\([-0-9]*\)'`
[ "$dcontrast" = "" ] && errMsg "--- DCONTRAST=$dcontrast MUST BE AN INTEGER ---"
test1=`echo "$dcontrast < -100" | bc`
test2=`echo "$dcontrast > 100" | bc`
[ $test1 -eq 1 -o $test2 -eq 1 ] && errMsg "--- DCONTRAST=$dcontrast MUST BE AN INTEGER BETWEEN -100 AND 100 ---"
;;
-i) # save overlay and masking images
shift
prefix="$1"
;;
--) shift; break ;; # end of arguments
-) break ;; # STDIN and end of arguments
-*) errMsg "--- UNKNOWN OPTION ---" ;;
*) break ;; # end of arguments
esac
shift # next option
done
#
# get infile and outfile
infile="$1"
outfile="$2"
# test that infile provided
[ "X$infile" = "X" ] && errMsg "NO INPUT FILE SPECIFIED"
# test that outfile provided
[ "X$outfile" = "X" ] && errMsg "NO OUTPUT FILE SPECIFIED"
# create directory for temporary files in /tmp or $TMPDIR
tmp=`mktemp -d "${TMPDIR:-/tmp}/$PROGNAME.XXXXXXXXXX"` ||
{ echo >&2 "$PROGNAME: Unable to create temporary file"; exit 10;}
trap 'rm -rf "$tmp"' 0 # remove on any exit
trap 'exit 2' 1 2 3 15 # error exit on interupt
tmp1="$tmp/pagecurl_1.mpc" # input file
tmp2="$tmp/pagecurl_2.mpc" # overlay image
tmp3="$tmp/pagecurl_3.mpc" # ellipse / transparency mask
# test input image
convert -quiet -regard-warnings "$infile" +gravity +repage "$tmp1" ||
errMsg "--- FILE $infile DOES NOT EXIST OR IS NOT AN ORDINARY FILE, NOT READABLE OR HAS ZERO SIZE ---"
ww=`convert $tmp1 -ping -format "%w" info:`
hh=`convert $tmp1 -ping -format "%h" info:`
wm1=`convert xc: -format "%[fx:$ww-1]" info:`
hm1=`convert xc: -format "%[fx:$hh-1]" info:`
xc=`convert xc: -format "%[fx:$ww/2]" info:`
yc=`convert xc: -format "%[fx:$hh/2]" info:`
if [ "X$xcoord" = "X" -a "X$ycoord" = "X" ]; then
xcoord=$wm1
ycoord=0
elif [ "X$xcoord" = "X" -a "X$ycoord" != "X" ]; then
xcoord=$wm1
elif [ "X$xcoord" != "X" -a "X$ycoord" = "X" ]; then
ycoord=0
fi
# set vertex nominally at upper left corner
x1=$xcoord
y1=$ycoord
# compute approx right angle
# dx=pixel distance from lower right corner along bottom edge
dx=`convert xc: -format "%[fx:$ww*$amount/100]" info:`
rangle=`convert xc: -format "%[fx:(180/pi)*atan($dx/($hh-$y1))]" info:`
# compute a=rx as semicircle arc length = dx
# compute b from a and ellipticity
a=`convert xc: -format "%[fx:($dx+$ww-$x1)/pi]" info:`
b=`convert xc: -format "%[fx:$a*(1-$ellipticity)]" info:`
# get diameter by sqrt(2) and a bit more to use for initial ellipse image as it will be trimmed
a2=`convert xc: -format "%[fx:3*$a]" info:`
a2h=`convert xc: -format "%[fx:$a2/2]" info:`
# compute approx center angle from p1 to dx and a
prx=`convert xc: -format "%[fx:$ww-$dx]" info:`
pry=$(($hh-1))
lenr=`convert xc: -format "%[fx:hypot(($y1-$pry),($x1-$prx))]" info:`
dangle=`convert xc: -format "%[fx:(180/pi)*asin(($a/2)/$lenr)]" info:`
angle=`convert xc: -format "%[fx:$rangle+$dangle]" info:`
# create ellipse (and mask) for curl
convert -size ${a2}x${a2} xc:none -fill white \
-draw "translate $a2h,$a2h rotate $angle ellipse 0,0 $a,$b 0,360" \
-trim +repage $tmp3
# get width, height of ellipse image
eww=`convert $tmp3 -ping -format "%w" info:`
ehh=`convert $tmp3 -ping -format "%h" info:`
# get center and upper left corner of trimmed ellipse image
# for inserting into full size image for mask
y2=`convert xc: -format "%[fx:$hh-$ehh/2]" info:`
x2=`convert xc: -format "%[fx:$x1-($y2-$y1)*tan(pi*$angle/180)]" info:`
x0=`convert xc: -format "%[fx:$x2-$eww/2]" info:`
y0=`convert xc: -format "%[fx:$y2-$ehh/2]" info:`
# insert ellipse image in white background at correct location to form mask
testx=`convert xc: -format "%[fx:sign($x0)]" info:`
testy=`convert xc: -format "%[fx:sign($y0)]" info:`
if [ $testx -eq 1 -a $testy -eq 1 ]; then
offsets="+${x0}+${y0}"
elif [ $testx -eq -1 -a $testy -eq 1 ]; then
offsets="${x0}+${y0}"
elif [ $testx -eq 1 -a $testy -eq -1 ]; then
offsets="+${x0}${y0}"
elif [ $testx -eq -1 -a $testy -eq -1 ]; then
offsets="${x0}${y0}"
fi
# get length from apex p1 to center of ellipse p2
len=`convert xc: -format "%[fx:hypot(($x2-$x1),($y2-$y1))]" info:`
# get complement rotation angle
angle2=`convert xc: -format "%[fx:-90+$angle]" info:`
# compute tangent points as if ellipse at origin and apex vertically above at len
# ellipse (x/a)^2 + (y/b)^2 = 1, where a and b are semi-major and semi-minor radii
# differentiate: dy/dx = slope at tangent = -(x*b^2)/(y*a^2)
# tangent line to apex (x1,y1): y-y1=-(x-x1)*(x*b^2)/(y*a^2)
# solve for y and substitute into equation of ellipse to find x from quadratic equation
p0x=0
p0y=-$len
A=`convert xc: -format "%[fx:$a*$a*$p0y*$p0y + $b*$b*$p0x*$p0x]" info:`
B=`convert xc: -format "%[fx:-2*$a*$a*$b*$b*$p0x]" info:`
C=`convert xc: -format "%[fx:$a*$a*$a*$a*($b*$b-$p0y*$p0y)]" info:`
p3x=`convert xc: -format "%[fx:(-$B-sqrt($B*$B-4*$A*$C))/(2*$A)]" info:`
p4x=`convert xc: -format "%[fx:(-$B+sqrt($B*$B-4*$A*$C))/(2*$A)]" info:`
p3y=`convert xc: -format "%[fx:($a*$a*$b*$b-$b*$b*$p0x*$p3x)/($a*$a*$p0y)]" info:`
p4y=`convert xc: -format "%[fx:($a*$a*$b*$b-$b*$b*$p0x*$p4x)/($a*$a*$p0y)]" info:`
# rotate p2 and p3 relative to p1 by angle3
x3=`convert xc: -format "%[fx:($p3x)cos(pi*$angle/180)-($p3y+$len)sin(pi*$angle/180)+$x1]" info:`
y3=`convert xc: -format "%[fx:($p3x)sin(pi*$angle/180)+($p3y+$len)cos(pi*$angle/180)+$y1]" info:`
x4=`convert xc: -format "%[fx:($p4x)cos(pi*$angle/180)-($p4y+$len)sin(pi*$angle/180)+$x1]" info:`
y4=`convert xc: -format "%[fx:($p4x)sin(pi*$angle/180)+($p4y+$len)cos(pi*$angle/180)+$y1]" info:`
# create triangle mask (using the color posibly given by user)
convert -size ${ww}x${hh} xc:none \
-fill $color -stroke $color -strokewidth $swidth \
-draw "polygon $x1,$y1 $x3,$y3 $x4,$y4" $tmp2
# Cut out an elliptical shape from trianglar overlay
convert $tmp2 $tmp3 -geometry $offsets -compose DstOut -composite $tmp2
# At this point the ellipse mask in no longer needed!
# setup for grad or doublegrad
if [ "$mode" = "grad" ]; then
lo=$gcontrast
hi=$((100-$lo))
process="-level ${lo}x${hi}% +level-colors black,$color"
elif [ "$mode" = "doublegrad" ]; then
lo=`convert xc: -format "%[fx:abs($dcontrast)]" info:`
hi=$((100-$lo))
test=`convert xc: -format "%[fx:sign($dcontrast)]" info:`
if [ $test -eq 1 ]; then
process="-level ${lo}x${hi}%"
else
process="+level ${lo}x${hi}%"
fi
process="$process -solarize 50% -level 0x50% +level-colors black,$color"
fi
# IF not generating a plain paper curl, recolor the overlay,
# using a -sparse-color gradient, with appropiate processing.
if [ "$mode" != "plain" ]; then
convert -size ${ww}x${hh} xc: -sparse-color Barycentric \
"$x3,$y3 white $x4,$y4 black" \
$process \
$tmp2 +swap -compose In -composite $tmp2
fi
# FUTURE add a offset shadow to to the overlay image.
# create the transparency mask (using an ellipse and tangent line)
convert -size ${ww}x${hh} xc:white \
-fill red -draw "line $x1,$y1 $x4,$y4" \
-draw "translate $x2,$y2 rotate $angle ellipse 0,0 $a,$b 0,360" \
-fill black -draw "color $wm1,$hm1 floodfill" \
-fill white +opaque black -blur 2x65000 -level 50x100% \
-alpha shape $tmp3
# Output overlay and transparency masks
if [ "X$prefix" != "X" ]; then
convert $tmp2 "${prefix}_overlay.png" # shaped overlay image
convert $tmp3 "${prefix}_mask.png" # shaped masking image
fi
# Do a "paint 'n' mask" of the original image, outputing the final image
convert $tmp1 $tmp2 -composite \
$tmp3 -compose DstIn -composite \
-compose over -bordercolor $bgcolor -border 0 \
"$outfile"
exit 0
Dernière modification par ragamatrix (Le 19/06/2013, à 15:51)
Hors ligne
#650 Le 19/06/2013, à 17:30
- Didier-T
Re : [Conky] Alternative à weather.com (3)
bien observé cabrito, le script est modifié.
merci.
Hors ligne