Benutzer:Thomas/Bilder raten: Unterschied zwischen den Versionen
1 |
Thomas (Diskussion | Beiträge) K Änderungen von 4.185.139.58 (Diskussion) wurden auf die letzte Version von 92.51.46.139 zurückgesetzt |
||
| (234 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
== [[bild:info.png|<nowiki/>]] Kurzbeschreibung == | == [[bild:info.png|<nowiki/>]] Kurzbeschreibung == | ||
{{Kurzbeschreibung|Bilder werden langsam aufgedeckt oder entzerrt und müssen erraten werden}} | {{Kurzbeschreibung|Bilder werden langsam aufgedeckt oder entzerrt und müssen erraten werden}} | ||
{{Vorbereitungsaufwand|3}}{{Dauer|}} | |||
{{Vorbereitungsaufwand| | |||
== [[bild:personen.png|<nowiki/>]] Gruppengrößen == | == [[bild:personen.png|<nowiki/>]] Gruppengrößen == | ||
{{Personenzahl|minLeiter=1|minTeilnehmer= | {{Personenzahl|minLeiter=1|minTeilnehmer=|maxTeilnehmer=}} | ||
== [[bild:buch.png|<nowiki/>]] Inhalt == | == [[bild:buch.png|<nowiki/>]] Inhalt == | ||
| Zeile 22: | Zeile 19: | ||
black-boxes.sh: | black-boxes.sh: | ||
<pre> | |||
#!/bin/bash | #!/bin/bash | ||
shopt -s nullglob | shopt -s nullglob | ||
| Zeile 28: | Zeile 25: | ||
# Erzeugt aus einer Liste von Bildern ein Blockraetsel pro Bild | # Erzeugt aus einer Liste von Bildern ein Blockraetsel pro Bild | ||
# Benoetigt Perl und ImageMagick | # Benoetigt Perl und ImageMagick | ||
# Autor: Thomas Bleher | # Autor: Thomas Bleher <ThomasBleher@gmx.de> | ||
# Name des Ausgabeverzeichnis | # Name des Ausgabeverzeichnis | ||
| Zeile 81: | Zeile 78: | ||
# Anzahl der Bilder in pattern/ festgelegt. | # Anzahl der Bilder in pattern/ festgelegt. | ||
mkdir -p | mkdir -p "../$OUT_DIR" | ||
echo -n | echo -n > "../$OUT_DIR/list.txt" | ||
for dir in * | for dir in * | ||
do | do | ||
if [ -d | if [ -d "$dir" ] | ||
then | then | ||
mkdir -p | mkdir -p "../$OUT_DIR/$dir" | ||
IMG_NR=0 | IMG_NR=0 | ||
for j in | for j in "$dir"/*.jpg "$dir"/*.JPG | ||
do | do | ||
echo | echo "Processing $j..." | ||
IMG_NR=$(( $IMG_NR + 1)) | IMG_NR=$(( $IMG_NR + 1)) | ||
mkdir -p | mkdir -p "../$OUT_DIR/$dir/$IMG_NR" | ||
PRAEFIX= | PRAEFIX="`echo "$j" | perl -pe 's,.*/,,;s/\..*?$//'`" | ||
echo -ne | echo -ne "$dir: $IMG_NR=$PRAEFIX\r\n" >> "../$OUT_DIR/list.txt" | ||
convert | convert "$j" -resize ${TARGET_SIZE}x${TARGET_SIZE}\> tmp_img.jpg | ||
SIZE=`identify tmp_img.jpg | cut -d\ -f3`\! | SIZE=`identify tmp_img.jpg | cut -d\ -f3`\! | ||
NR_ITERATIONS=`ls ../pattern/*.png | wc -l` | NR_ITERATIONS=`ls ../pattern/*.png | wc -l` | ||
NR=0 | NR=0 | ||
for i in | for i in "../$PATTERN_DIR/"*.png | ||
do | do | ||
POINTS=`perl -e | POINTS=`perl -e "print int((($NR_ITERATIONS - $NR - 2) * $MAX_POINTS / $NR_ITERATIONS) + 1);"` | ||
OUT= | OUT="../$OUT_DIR/$dir/$IMG_NR/${PRAEFIX}_`basename $i .png`.jpg" | ||
if [ ! -e | if [ ! -e "$OUT" ] | ||
then | then | ||
convert | convert "$i" -scale "$SIZE" -transparent "#ffffff" tmp_pat.png | ||
composite tmp_pat.png tmp_img.jpg tmp_img_out.jpg | composite tmp_pat.png tmp_img.jpg tmp_img_out.jpg | ||
# um keine Punkte anzuzeigen, naechste Zeile auskommentieren | # um keine Punkte anzuzeigen, naechste Zeile auskommentieren | ||
# POINTS= | # POINTS="" | ||
convert tmp_img_out.jpg -pointsize $FONT_SIZE \ | convert tmp_img_out.jpg -pointsize $FONT_SIZE \ | ||
-draw | -draw "gravity SouthEast fill black text 10,12 '$POINTS' fill white text 12,10 '$POINTS'" \ | ||
-quality $TARGET_QUALITY | -quality $TARGET_QUALITY "$OUT" | ||
fi | fi | ||
NR=$(($NR + 1)) | NR=$(($NR + 1)) | ||
| Zeile 119: | Zeile 116: | ||
fi | fi | ||
done | done | ||
</pre> | |||
Zusatzskript zum Erzeugen der Muster: | Zusatzskript zum Erzeugen der Muster: | ||
<pre> | |||
#!/usr/bin/perl | #!/usr/bin/perl | ||
use warnings; | use warnings; | ||
| Zeile 133: | Zeile 130: | ||
# Man kann aber auch die schon vorhandenen Muster unter pattern benutzen | # Man kann aber auch die schon vorhandenen Muster unter pattern benutzen | ||
# | # | ||
# Autor: Thomas Bleher | # Autor: Thomas Bleher <ThomasBleher@gmx.de> | ||
# Benoetigt unter Debian/Ubuntu libgd-gd2-perl oder libgd-gd2-noxpm-perl | # Benoetigt unter Debian/Ubuntu libgd-gd2-perl oder libgd-gd2-noxpm-perl | ||
| Zeile 148: | Zeile 145: | ||
# allocate some colors | # allocate some colors | ||
$white = $im- | $white = $im->colorAllocate(255,255,255); | ||
$black = $im- | $black = $im->colorAllocate(0,0,0); | ||
# make the background transparent and interlaced | # make the background transparent and interlaced | ||
$im- | $im->transparent($white); | ||
$im- | $im->fill(0,0,$black); | ||
my $count = 0; | my $count = 0; | ||
| Zeile 159: | Zeile 156: | ||
my $x = $pixel % $width; | my $x = $pixel % $width; | ||
my $y = int($pixel / $width); | my $y = int($pixel / $width); | ||
$im- | $im->setPixel($x, $y, $white); | ||
$count++; | $count++; | ||
if( $count % $step == 0 ) { | if( $count % $step == 0 ) { | ||
open PNG, | open PNG, ">", sprintf("%03d.png", $count); | ||
print PNG $im- | print PNG $im->png; | ||
close PNG; | close PNG; | ||
} | } | ||
} | } | ||
</pre> | |||
Ergebnis:{{br}} | Ergebnis:{{br}} | ||
| Zeile 173: | Zeile 170: | ||
==== Swirl ==== | ==== Swirl ==== | ||
<pre> | |||
#!/bin/bash | #!/bin/bash | ||
shopt -s nullglob | shopt -s nullglob | ||
| Zeile 179: | Zeile 176: | ||
# Erzeugt aus einer Liste von Bildern ein Verdrehraetsel pro Bild | # Erzeugt aus einer Liste von Bildern ein Verdrehraetsel pro Bild | ||
# Benoetigt Perl und ImageMagick | # Benoetigt Perl und ImageMagick | ||
# Autor: Thomas Bleher | # Autor: Thomas Bleher <ThomasBleher@gmx.de> | ||
# Name des Ausgabeverzeichnis | # Name des Ausgabeverzeichnis | ||
| Zeile 200: | Zeile 197: | ||
NR_ITERATIONS=`seq $MAX $STEP 0 | wc -l` | NR_ITERATIONS=`seq $MAX $STEP 0 | wc -l` | ||
mkdir -p | mkdir -p "../$OUT_DIR" | ||
echo -n | echo -n > "../$OUT_DIR/list.txt" | ||
for dir in * | for dir in * | ||
do | do | ||
if [ -d | if [ -d "$dir" ] | ||
then | then | ||
mkdir -p | mkdir -p "../$OUT_DIR/$dir" | ||
IMG_NR=0 | IMG_NR=0 | ||
for j in | for j in "$dir"/*.jpg "$dir"/*.JPG | ||
do | do | ||
echo | echo "Processing $j..." | ||
IMG_NR=$(( $IMG_NR + 1)) | IMG_NR=$(( $IMG_NR + 1)) | ||
mkdir -p | mkdir -p "../$OUT_DIR/$dir/$IMG_NR" | ||
PRAEFIX= | PRAEFIX="`echo "$j" | perl -pe 's,.*/,,;s/\..*?$//'`" | ||
echo | echo "$dir: $IMG_NR=$PRAEFIX" >> "../$OUT_DIR/list.txt" | ||
convert | convert "$j" -resize ${TARGET_SIZE}x${TARGET_SIZE}\> tmp_img.jpg | ||
NR=0 | NR=0 | ||
for i in `seq $MAX $STEP 0` | for i in `seq $MAX $STEP 0` | ||
do | do | ||
POINTS=`perl -e | POINTS=`perl -e "print int((($NR_ITERATIONS - $NR - 2) * $MAX_POINTS / $NR_ITERATIONS) + 1);"` | ||
SUFFIX=`perl -e | SUFFIX=`perl -e "printf '%04d', abs($MAX - $i);"` | ||
# implode max 0.5 | # implode max 0.5 | ||
#IMPLODE=`echo | #IMPLODE=`echo "$i / ($MAX) / 2" | bc -l` | ||
BORDER=`perl -e | BORDER=`perl -e "print int($i * $TARGET_SIZE / ($MAX * 5));"` | ||
OUT= | OUT="../$OUT_DIR/$dir/$IMG_NR/${PRAEFIX}_$SUFFIX.jpg" | ||
if [ ! -e | if [ ! -e "$OUT" ] | ||
then | then | ||
# um keine Punkte anzuzeigen, naechste Zeile auskommentieren | # um keine Punkte anzuzeigen, naechste Zeile auskommentieren | ||
# POINTS= | # POINTS="" | ||
convert tmp_img.jpg -bordercolor white -border ${BORDER}x${BORDER} \ | convert tmp_img.jpg -bordercolor white -border ${BORDER}x${BORDER} \ | ||
-swirl $i -shave ${BORDER}x${BORDER} -pointsize $FONT_SIZE \ | -swirl $i -shave ${BORDER}x${BORDER} -pointsize $FONT_SIZE \ | ||
-draw | -draw "gravity SouthEast fill black text 10,12 '$POINTS' fill white text 12,10 '$POINTS'" \ | ||
-quality $TARGET_QUALITY | -quality $TARGET_QUALITY "$OUT" | ||
fi | fi | ||
NR=$(($NR + 1)) | NR=$(($NR + 1)) | ||
| Zeile 239: | Zeile 236: | ||
fi | fi | ||
done | done | ||
</pre> | |||
Ergebnis:{{br}} | Ergebnis:{{br}} | ||
[[Datei:Bilderraetsel-animiert-swirl.gif]] | [[Datei:Bilderraetsel-animiert-swirl.gif]] | ||
{{Autor|Thomas Bleher}} | {{Autor|Thomas Bleher}} | ||
== [[bild:Comments.png|<nowiki/>]] Kommentare == | == [[bild:Comments.png|<nowiki/>]] Kommentare == | ||
Вау, великолепно сайт. Спасибо...<br /> | |||
Вау, великолепно сайт. Спасибо... | Посетите также мою страничку <br /> | ||
Посетите также мою страничку | |||
web directory ru сервисы социальных закладок web directory ru | web directory ru сервисы социальных закладок web directory ru | ||
<br />-- Ernestine 22:44, 13. Sep. 2023 (CEST) | |||
Вы действительно практичный веб-сайт; не мог сделать это без тебя! | Вы действительно практичный веб-сайт; не мог сделать это без тебя!<br /> | ||
Посетите также мою страничку Social bookmarking sites web directory web directory list | Посетите также мою страничку 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) | |||
Aktuelle Version vom 26. Juli 2024, 21:28 Uhr
Kurzbeschreibung[Bearbeiten]
Bilder werden langsam aufgedeckt oder entzerrt und müssen erraten werden
Vorbereitungsaufwand: Hoch (> 1 Stunde)
Gruppengrößen[Bearbeiten]
Mindestens 1 Leiter. Für beliebig viele Teilnehmer.
Inhalt[Bearbeiten]
TODO: Beschreibung vervollständigen
Erzeugen der Bilder[Bearbeiten]
Low-Tech[Bearbeiten]
Bilder mit Diaprojektor oder Beamer an die Wand werfen, langsam den Zoom richtig einstellen (dadurch sind die Bilder erst sehr verschwommen)
Linux-Kommandozeile[Bearbeiten]
Black Boxes[Bearbeiten]
black-boxes.sh:
#!/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
Zusatzskript zum Erzeugen der Muster:
#!/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;
}
}
Swirl[Bearbeiten]
#!/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
- Autor
- Thomas Bleher
Kommentare[Bearbeiten]
Вау, великолепно сайт. Спасибо...
Посетите также мою страничку
web directory ru сервисы социальных закладок web directory ru
-- Ernestine 22:44, 13. Sep. 2023 (CEST)
Вы действительно практичный веб-сайт; не мог сделать это без тебя!
Посетите также мою страничку Social bookmarking sites web directory web directory list
-- Sheri 15:03, 16. Sep. 2023 (CEST)
Я ценю просматриваю ваш интернет-сайт.
Большое спасибо! Посетите также мою страничку технология
заливки отмостки строительство подготовка поверхности
-- Hattie 12:10, 17. Sep. 2023 (CEST)

