Benutzer:Thomas/Bilder raten: Unterschied zwischen den Versionen

Aus dem SpieleWiki
Zur Navigation springen Zur Suche springen
Neuer Kommentar
Thomas (Diskussion | Beiträge)
K Änderungen von 4.185.139.58 (Diskussion) wurden auf die letzte Version von 92.51.46.139 zurückgesetzt
 
(831 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt)
(kein Unterschied)

Aktuelle Version vom 26. Juli 2024, 22: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;
	}
}

Ergebnis:

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

Ergebnis:


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)