Benutzer:Thomas/Bilder raten
555
Kurzbeschreibung
Bilder werden langsam aufgedeckt oder entzerrt und müssen erraten werden
Vorbereitungsaufwand: Gering (< 15 min)
Dauer des Spiels: 1 min0,0167 h <br />.1
Gruppengrößen
Mindestens 1 Leiter. Für genau 1 Teilnehmer.
Inhalt
TODO: Beschreibung vervollständigen
Erzeugen der Bilder
Low-Tech
Bilder mit Diaprojektor oder Beamer an die Wand werfen, langsam den Zoom richtig einstellen (dadurch sind die Bilder erst sehr verschwommen)
Linux-Kommandozeile
Black Boxes
black-boxes.sh: <pre>
- !/bin/bash
shopt -s nullglob
- Erzeugt aus einer Liste von Bildern ein Blockraetsel pro Bild
- Benoetigt Perl und ImageMagick
- Autor: Thomas Bleher <ThomasBleher@gmx.de>
- Name des Ausgabeverzeichnis
OUT_DIR=raetsel-block
- Maximale Bildgroesse (in Pixel fuer Breite bzw. Hoehe)
TARGET_SIZE=1024
- JPG-Bildqualitaet
TARGET_QUALITY=75
- Maximale Punktzahl die man bekommen kann
- die Punktzahl im Bild kann man auch deaktivieren (dazu unten nach POINTS suchen)
MAX_POINTS=6
- Verzeichnis mit den Mustern, die ueber das Bild gelegt werden
PATTERN_DIR=pattern
- Schriftgroesse
FONT_SIZE=30
- Verzeichnisstruktur vorher:
- pattern/
- pattern/003.png
- pattern/006.png
- ...
- input/kategorie1/bilda.jpg
- input/kategorie1/bildb.jpg
- input/kategorie2/bildc.jpg
- Aufruf dieses Programms in Verzeichnis input/
- (Verzeichnis darf auch anders heissen, aber parallel dazu muss
- das Verzeichnis pattern liegen, und es muss eine Unterverzeichnis-
- Ebene geben (die Kategorien)
- Danach:
- pattern/
- pattern/003.png
- pattern/006.png
- pattern/009.png
- ...
- input/kategorie1/bilda.jpg
- input/kategorie1/bildb.jpg
- input/kategorie2/bildc.jpg
- ...
- raetsel-block/kategorie1/1/bilda_003.jpg
- raetsel-block/kategorie1/1/bilda_006.jpg
- raetsel-block/kategorie1/1/bilda_009.jpg
- raetsel-block/kategorie1/2/bildb_003.jpg
- raetsel-block/kategorie1/2/bildb_006.jpg
- raetsel-block/kategorie1/2/bildb_009.jpg
- raetsel-block/kategorie2/1/bildc_003.jpg
- raetsel-block/kategorie2/1/bildc_006.jpg
- raetsel-block/kategorie2/1/bildc_009.jpg
- Die Anzahl der entstehenden Bilder pro Ursprungsbild wird durch die
- Anzahl der Bilder in pattern/ festgelegt.
mkdir -p "../$OUT_DIR" echo -n > "../$OUT_DIR/list.txt" for dir in * do if [ -d "$dir" ] then mkdir -p "../$OUT_DIR/$dir" IMG_NR=0 for j in "$dir"/*.jpg "$dir"/*.JPG do echo "Processing $j..." IMG_NR=$(( $IMG_NR + 1)) mkdir -p "../$OUT_DIR/$dir/$IMG_NR" PRAEFIX="`echo "$j" | perl -pe 's,.*/,,;s/\..*?$//'`" echo -ne "$dir: $IMG_NR=$PRAEFIX\r\n" >> "../$OUT_DIR/list.txt" convert "$j" -resize ${TARGET_SIZE}x${TARGET_SIZE}\> tmp_img.jpg SIZE=`identify tmp_img.jpg | cut -d\ -f3`\! NR_ITERATIONS=`ls ../pattern/*.png | wc -l` NR=0 for i in "../$PATTERN_DIR/"*.png do POINTS=`perl -e "print int((($NR_ITERATIONS - $NR - 2) * $MAX_POINTS / $NR_ITERATIONS) + 1);"` OUT="../$OUT_DIR/$dir/$IMG_NR/${PRAEFIX}_`basename $i .png`.jpg" if [ ! -e "$OUT" ] then convert "$i" -scale "$SIZE" -transparent "#ffffff" tmp_pat.png composite tmp_pat.png tmp_img.jpg tmp_img_out.jpg # um keine Punkte anzuzeigen, naechste Zeile auskommentieren # POINTS="" convert tmp_img_out.jpg -pointsize $FONT_SIZE \
-draw "gravity SouthEast fill black text 10,12 '$POINTS' fill white text 12,10 '$POINTS'" \ -quality $TARGET_QUALITY "$OUT"
fi NR=$(($NR + 1)) done done fi done </pre>
Zusatzskript zum Erzeugen der Muster:
<pre>
- !/usr/bin/perl
use warnings; use GD; use List::Util 'shuffle';
- ein kleines Programm, um kleine PNG-Dateien mit Mustern zu erzeugen, die
- fuer ein Block-Raetsel ueber die Bilder gelegt werden koennen.
- Man kann aber auch die schon vorhandenen Muster unter pattern benutzen
- Autor: Thomas Bleher <ThomasBleher@gmx.de>
- Benoetigt unter Debian/Ubuntu libgd-gd2-perl oder libgd-gd2-noxpm-perl
- Anzahl Pixel waagrecht
my $width = 12;
- Anzahl Pixel senkrecht
my $height = 9;
- wie viele Pixel werden pro Schritt aufgedeckt
my $step = 3;
- create a new image
$im = new GD::Image($width, $height);
- allocate some colors
$white = $im->colorAllocate(255,255,255); $black = $im->colorAllocate(0,0,0);
- make the background transparent and interlaced
$im->transparent($white); $im->fill(0,0,$black);
my $count = 0; for my $pixel (shuffle(0..$height*$width-1)) { my $x = $pixel % $width; my $y = int($pixel / $width); $im->setPixel($x, $y, $white); $count++; if( $count % $step == 0 ) { open PNG, ">", sprintf("%03d.png", $count); print PNG $im->png; close PNG; } } </pre>
Swirl
<pre>
- !/bin/bash
shopt -s nullglob
- Erzeugt aus einer Liste von Bildern ein Verdrehraetsel pro Bild
- Benoetigt Perl und ImageMagick
- Autor: Thomas Bleher <ThomasBleher@gmx.de>
- Name des Ausgabeverzeichnis
OUT_DIR=raetsel-swirl
- Maximale Bildgroesse (in Pixel fuer Breite bzw. Hoehe)
TARGET_SIZE=1024
- JPG-Bildqualitaet
TARGET_QUALITY=75
- Maximale Punktzahl die man bekommen kann
- die Punktzahl im Bild kann man auch deaktivieren (dazu unten nach POINTS suchen)
MAX_POINTS=8
- Schriftgroesse
FONT_SIZE=30
- Maximaler Verdrehwinkel
MAX=720
- Verdrehwinkel in Grad pro Schritt
STEP=-20
- Wichtig: MAX muss durch STEP ohne Rest teilbar sein!
NR_ITERATIONS=`seq $MAX $STEP 0 | wc -l`
mkdir -p "../$OUT_DIR" echo -n > "../$OUT_DIR/list.txt" for dir in * do if [ -d "$dir" ] then mkdir -p "../$OUT_DIR/$dir" IMG_NR=0 for j in "$dir"/*.jpg "$dir"/*.JPG do echo "Processing $j..." IMG_NR=$(( $IMG_NR + 1)) mkdir -p "../$OUT_DIR/$dir/$IMG_NR" PRAEFIX="`echo "$j" | perl -pe 's,.*/,,;s/\..*?$//'`" echo "$dir: $IMG_NR=$PRAEFIX" >> "../$OUT_DIR/list.txt" convert "$j" -resize ${TARGET_SIZE}x${TARGET_SIZE}\> tmp_img.jpg NR=0 for i in `seq $MAX $STEP 0` do POINTS=`perl -e "print int((($NR_ITERATIONS - $NR - 2) * $MAX_POINTS / $NR_ITERATIONS) + 1);"` SUFFIX=`perl -e "printf '%04d', abs($MAX - $i);"` # implode max 0.5 #IMPLODE=`echo "$i / ($MAX) / 2" | bc -l` BORDER=`perl -e "print int($i * $TARGET_SIZE / ($MAX * 5));"` OUT="../$OUT_DIR/$dir/$IMG_NR/${PRAEFIX}_$SUFFIX.jpg" if [ ! -e "$OUT" ] then # um keine Punkte anzuzeigen, naechste Zeile auskommentieren # POINTS="" convert tmp_img.jpg -bordercolor white -border ${BORDER}x${BORDER} \
-swirl $i -shave ${BORDER}x${BORDER} -pointsize $FONT_SIZE \ -draw "gravity SouthEast fill black text 10,12 '$POINTS' fill white text 12,10 '$POINTS'" \ -quality $TARGET_QUALITY "$OUT"
fi NR=$(($NR + 1)) done done fi done </pre>
- Autor
- Thomas Bleher
Kommentare
Вау, великолепно сайт. Спасибо...<br /> Посетите также мою страничку <br /> web directory ru сервисы социальных закладок web directory ru <br />-- Ernestine 22:44, 13. Sep. 2023 (CEST)
Вы действительно практичный веб-сайт; не мог сделать это без тебя!<br /> Посетите также мою страничку Social bookmarking sites web directory web directory list <br />-- Sheri 15:03, 16. Sep. 2023 (CEST)
Я ценю просматриваю ваш интернет-сайт.<br /> Большое спасибо! Посетите также мою страничку технология <br /> заливки отмостки строительство подготовка поверхности <br />-- Hattie 12:10, 17. Sep. 2023 (CEST)