Hallo Zusammen,
Ich moechte gerne vier Bilder zu einem Bild gekachelt zusammenfuegen. Sowas ist moeglich mit montage aus dem imagemagik Paket. Allerdings ist das zu langsam, zumal ich mehrere tausend Bilder habe.
Kennt jemand von Euch eine schnellere Alternative?
Vielen Dank,
Ralf
Bild kacheln
Re: Bild kacheln
Das OpenStreetMap-Projekt bietet die Möglichkeit z.B. kostenlose DIN-A0-Landkarten auf OSM-Kartenbasis zu generieren. Hierbei werden Kacheldaten der OSM-Welt zusammengebaut.
http://wiki.openstreetmap.org/wiki/DE:Bigmap
Der Programmcode sieht in etwa so aus. Vielleicht ein Ansatz. Das Beziehen der Kacheln kannst du sparen, da du wahrscheinlich keine Landkarten benötigst. Aber vielleicht kannst du den Rest irgendwie verwerten. Die Schleifen gehen dann jeweils nur über 2 und nicht 22 Einträge. Mag auch nur bei PNG gehen, bin mir nicht sicher.
http://wiki.openstreetmap.org/wiki/DE:Bigmap
Der Programmcode sieht in etwa so aus. Vielleicht ein Ansatz. Das Beziehen der Kacheln kannst du sparen, da du wahrscheinlich keine Landkarten benötigst. Aber vielleicht kannst du den Rest irgendwie verwerten. Die Schleifen gehen dann jeweils nur über 2 und nicht 22 Einträge. Mag auch nur bei PNG gehen, bin mir nicht sicher.
Code: Alles auswählen
#!/usr/bin/perl
use strict;
use LWP;
use GD;
my $img = GD::Image->new(5632, 5632, 1);
my $white = $img->colorAllocate(248,248,248);
$img->filledRectangle(0,0,5632,5632,$white);
my $ua = LWP::UserAgent->new();
$ua->env_proxy;
for (my $x=0;$x<22;$x++)
{
for (my $y=0;$y<22;$y++)
{
my $url = sprintf("http://tah.openstreetmap.org/Tiles/tile/15/%d/%d.png"
, $x+17066,$y+10822);
print STDERR "$url\n";
my $resp = $ua->get($url);
die $resp->status_line unless $resp->is_success;
my $tile = GD::Image->new($resp->content);
next if ($tile->width == 1);
$img->copy($tile, $x*256,$y*256,0,0,256,256);
}
}
binmode STDOUT;
print $img->png();