Benutzer:Thomas/Bilder raten: Unterschied zwischen den Versionen

Aus dem SpieleWiki
Zur Navigation springen Zur Suche springen
1
1
Zeile 10: Zeile 10:


== [[bild:buch.png|<nowiki/>]] Inhalt ==
== [[bild:buch.png|<nowiki/>]] Inhalt ==
@@bca3C
{{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:
&lt;pre&gt;
#!/bin/bash
shopt -s nullglob
 
# Erzeugt aus einer Liste von Bildern ein Blockraetsel pro Bild
# Benoetigt Perl und ImageMagick
# Autor: Thomas Bleher &lt;ThomasBleher@gmx.de&gt;
 
# 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 &quot;../$OUT_DIR&quot;
echo -n &gt; &quot;../$OUT_DIR/list.txt&quot;
for dir in *
do
if [ -d &quot;$dir&quot; ]
then
mkdir -p &quot;../$OUT_DIR/$dir&quot;
IMG_NR=0
for j in &quot;$dir&quot;/*.jpg &quot;$dir&quot;/*.JPG
do
echo &quot;Processing $j...&quot;
IMG_NR=$(( $IMG_NR + 1))
mkdir -p &quot;../$OUT_DIR/$dir/$IMG_NR&quot;
PRAEFIX=&quot;`echo &quot;$j&quot; | perl -pe 's,.*/,,;s/\..*?$//'`&quot;
echo -ne &quot;$dir: $IMG_NR=$PRAEFIX\r\n&quot; &gt;&gt; &quot;../$OUT_DIR/list.txt&quot;
convert &quot;$j&quot; -resize ${TARGET_SIZE}x${TARGET_SIZE}\&gt; tmp_img.jpg
SIZE=`identify tmp_img.jpg | cut -d\  -f3`\!
NR_ITERATIONS=`ls ../pattern/*.png | wc -l`
NR=0
for i in &quot;../$PATTERN_DIR/&quot;*.png
do
POINTS=`perl -e &quot;print int((($NR_ITERATIONS - $NR - 2) * $MAX_POINTS / $NR_ITERATIONS) + 1);&quot;`
OUT=&quot;../$OUT_DIR/$dir/$IMG_NR/${PRAEFIX}_`basename $i .png`.jpg&quot;
if [ ! -e &quot;$OUT&quot; ]
then
convert &quot;$i&quot; -scale &quot;$SIZE&quot; -transparent &quot;#ffffff&quot; tmp_pat.png
composite tmp_pat.png tmp_img.jpg tmp_img_out.jpg
# um keine Punkte anzuzeigen, naechste Zeile auskommentieren
# POINTS=&quot;&quot;
convert tmp_img_out.jpg -pointsize $FONT_SIZE \
                                            -draw &quot;gravity SouthEast fill black text 10,12 '$POINTS' fill white  text 12,10 '$POINTS'&quot; \
                                            -quality $TARGET_QUALITY &quot;$OUT&quot;
fi
NR=$(($NR + 1))
done
done
fi
done
&lt;/pre&gt;
 
Zusatzskript zum Erzeugen der Muster:
 
&lt;pre&gt;
#!/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 &lt;ThomasBleher@gmx.de&gt;
 
# 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-&gt;colorAllocate(255,255,255);
$black = $im-&gt;colorAllocate(0,0,0);     
 
# make the background transparent and interlaced
$im-&gt;transparent($white);
$im-&gt;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-&gt;setPixel($x, $y, $white);
$count++;
if( $count % $step == 0 ) {
open PNG, &quot;&gt;&quot;, sprintf(&quot;%03d.png&quot;, $count);
print PNG $im-&gt;png;
close PNG;
}
}
&lt;/pre&gt;
 
Ergebnis:{{br}}
[[Datei:Bilderraetsel-animiert-block.gif]]
 
==== Swirl ====
&lt;pre&gt;
#!/bin/bash
shopt -s nullglob
 
# Erzeugt aus einer Liste von Bildern ein Verdrehraetsel pro Bild
# Benoetigt Perl und ImageMagick
# Autor: Thomas Bleher &lt;ThomasBleher@gmx.de&gt;
 
# 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 &quot;../$OUT_DIR&quot;
echo -n &gt; &quot;../$OUT_DIR/list.txt&quot;
for dir in *
do
if [ -d &quot;$dir&quot; ]
then
mkdir -p &quot;../$OUT_DIR/$dir&quot;
IMG_NR=0
for j in &quot;$dir&quot;/*.jpg &quot;$dir&quot;/*.JPG
do
echo &quot;Processing $j...&quot;
IMG_NR=$(( $IMG_NR + 1))
mkdir -p &quot;../$OUT_DIR/$dir/$IMG_NR&quot;
PRAEFIX=&quot;`echo &quot;$j&quot; | perl -pe 's,.*/,,;s/\..*?$//'`&quot;
echo &quot;$dir: $IMG_NR=$PRAEFIX&quot; &gt;&gt; &quot;../$OUT_DIR/list.txt&quot;
convert &quot;$j&quot; -resize ${TARGET_SIZE}x${TARGET_SIZE}\&gt; tmp_img.jpg
NR=0
for i in `seq $MAX $STEP 0`
do
POINTS=`perl -e &quot;print int((($NR_ITERATIONS - $NR - 2) * $MAX_POINTS / $NR_ITERATIONS) + 1);&quot;`
SUFFIX=`perl -e &quot;printf '%04d', abs($MAX - $i);&quot;`
# implode max 0.5
#IMPLODE=`echo &quot;$i / ($MAX) / 2&quot; | bc -l`
BORDER=`perl -e &quot;print int($i * $TARGET_SIZE / ($MAX * 5));&quot;`
OUT=&quot;../$OUT_DIR/$dir/$IMG_NR/${PRAEFIX}_$SUFFIX.jpg&quot;
if [ ! -e &quot;$OUT&quot; ]
then
# um keine Punkte anzuzeigen, naechste Zeile auskommentieren
# POINTS=&quot;&quot;
convert tmp_img.jpg -bordercolor white -border ${BORDER}x${BORDER} \
                                            -swirl $i -shave ${BORDER}x${BORDER} -pointsize $FONT_SIZE \
                                            -draw &quot;gravity SouthEast fill black text 10,12 '$POINTS' fill white  text 12,10 '$POINTS'&quot; \
                                            -quality $TARGET_QUALITY &quot;$OUT&quot;
fi
NR=$(($NR + 1))
done
done
fi
done
&lt;/pre&gt;
 
Ergebnis:{{br}}
[[Datei:Bilderraetsel-animiert-swirl.gif]]
 


{{Autor|Thomas Bleher}}
{{Autor|Thomas Bleher}}
[[Kategorie:Spiele_drinnen]]
[[Kategorie:Basteln]]


== [[bild:Comments.png|<nowiki/>]] Kommentare ==
== [[bild:Comments.png|<nowiki/>]] Kommentare ==

Version vom 26. Juli 2024, 18:48 Uhr

555

Kurzbeschreibung

 Bilder werden langsam aufgedeckt oder entzerrt und müssen erraten werden


Vorbereitungsaufwand: Unbekannt 1
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>

  1. !/bin/bash

shopt -s nullglob

  1. Erzeugt aus einer Liste von Bildern ein Blockraetsel pro Bild
  2. Benoetigt Perl und ImageMagick
  3. Autor: Thomas Bleher <ThomasBleher@gmx.de>
  1. Name des Ausgabeverzeichnis

OUT_DIR=raetsel-block

  1. Maximale Bildgroesse (in Pixel fuer Breite bzw. Hoehe)

TARGET_SIZE=1024

  1. JPG-Bildqualitaet

TARGET_QUALITY=75

  1. Maximale Punktzahl die man bekommen kann
  2. die Punktzahl im Bild kann man auch deaktivieren (dazu unten nach POINTS suchen)

MAX_POINTS=6

  1. Verzeichnis mit den Mustern, die ueber das Bild gelegt werden

PATTERN_DIR=pattern

  1. Schriftgroesse

FONT_SIZE=30

  1. Verzeichnisstruktur vorher:
  2. pattern/
  3. pattern/003.png
  4. pattern/006.png
  5. ...
  6. input/kategorie1/bilda.jpg
  7. input/kategorie1/bildb.jpg
  8. input/kategorie2/bildc.jpg
  9. Aufruf dieses Programms in Verzeichnis input/
  10. (Verzeichnis darf auch anders heissen, aber parallel dazu muss
  11. das Verzeichnis pattern liegen, und es muss eine Unterverzeichnis-
  12. Ebene geben (die Kategorien)
  13. Danach:
  14. pattern/
  15. pattern/003.png
  16. pattern/006.png
  17. pattern/009.png
  18. ...
  19. input/kategorie1/bilda.jpg
  20. input/kategorie1/bildb.jpg
  21. input/kategorie2/bildc.jpg
  22. ...
  23. raetsel-block/kategorie1/1/bilda_003.jpg
  24. raetsel-block/kategorie1/1/bilda_006.jpg
  25. raetsel-block/kategorie1/1/bilda_009.jpg
  26. raetsel-block/kategorie1/2/bildb_003.jpg
  27. raetsel-block/kategorie1/2/bildb_006.jpg
  28. raetsel-block/kategorie1/2/bildb_009.jpg
  29. raetsel-block/kategorie2/1/bildc_003.jpg
  30. raetsel-block/kategorie2/1/bildc_006.jpg
  31. raetsel-block/kategorie2/1/bildc_009.jpg
  1. Die Anzahl der entstehenden Bilder pro Ursprungsbild wird durch die
  2. 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>

  1. !/usr/bin/perl

use warnings; use GD; use List::Util 'shuffle';

  1. ein kleines Programm, um kleine PNG-Dateien mit Mustern zu erzeugen, die
  2. fuer ein Block-Raetsel ueber die Bilder gelegt werden koennen.
  3. Man kann aber auch die schon vorhandenen Muster unter pattern benutzen
  4. Autor: Thomas Bleher <ThomasBleher@gmx.de>
  1. Benoetigt unter Debian/Ubuntu libgd-gd2-perl oder libgd-gd2-noxpm-perl
  1. Anzahl Pixel waagrecht

my $width = 12;

  1. Anzahl Pixel senkrecht

my $height = 9;

  1. wie viele Pixel werden pro Schritt aufgedeckt

my $step = 3;

  1. create a new image

$im = new GD::Image($width, $height);

  1. allocate some colors

$white = $im->colorAllocate(255,255,255); $black = $im->colorAllocate(0,0,0);

  1. 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>

Ergebnis:

Swirl

<pre>

  1. !/bin/bash

shopt -s nullglob

  1. Erzeugt aus einer Liste von Bildern ein Verdrehraetsel pro Bild
  2. Benoetigt Perl und ImageMagick
  3. Autor: Thomas Bleher <ThomasBleher@gmx.de>
  1. Name des Ausgabeverzeichnis

OUT_DIR=raetsel-swirl

  1. Maximale Bildgroesse (in Pixel fuer Breite bzw. Hoehe)

TARGET_SIZE=1024

  1. JPG-Bildqualitaet

TARGET_QUALITY=75

  1. Maximale Punktzahl die man bekommen kann
  2. die Punktzahl im Bild kann man auch deaktivieren (dazu unten nach POINTS suchen)

MAX_POINTS=8

  1. Schriftgroesse

FONT_SIZE=30

  1. Maximaler Verdrehwinkel

MAX=720

  1. Verdrehwinkel in Grad pro Schritt

STEP=-20

  1. 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>

Ergebnis:



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)