ulis, 2006-02-05. Une procédure pour changer la luminosité d'une map en l'éclaircissant ou en l'assombrissant.
Pourquoi
Pour manipuler facilement les maps.
Comment
En appliquant un incrément à chaque indice de luminosité.
Utilisation
Pour des maps
relight delta [map]... # delta: # +n: lighten n levels # -n: darken n levels # map: a map
Pour un fichier
relight delta file # delta: # +n: lighten n levels # -n: darken n levels # file: file name
La procédure
# relight proc relight {delta args} \ { if {![string match {[\-+][0-9]} $delta]} \ { error "relight: bad increment '$delta'" } foreach map $args \ { set file "" if {[llength $map] == 1} \ { set file $map set map [file2map $map] } set map2 [list] foreach line $map \ { set line2 "" foreach pix [split $line {}] \ { set pix 0x$pix set v [expr {$pix + $delta}] if {$v > 15} { set v 15} if {$v < 0} { set v 0} append line2 [format %x $v] } lappend map2 $line2 } if {$file != ""} { map2file $map2 $file } \ else { return $map2 } } }
Démo
wm title . relight . config -padx 80 -pady 10 set n 0 foreach delta {-2 -1 -0 +1 +2} \ { label .$n -image [map2img [relight $delta $map] white #484] pack .$n -pady 2 incr n }
Voir aussi
Discussion
Catégorie Exemple | Catégorie Traitement d'image