Hi,
ich möchte mit GD eine Kollage aus Zufallsbildern eines ordners erstellen.
Das Problem ist nun, das die Bilder hochkant und normal sind, die Kollage soll aber dennoch flächendeckend und etwas transparent sein.
Nur genau das bekomme ich irgendwie nicht hin, vielleicht kann mir da ja jemand von euch weiterhelfen.
Hier schonmal mein Code bisher (ja ich weiß, kann noch stark optimiert werden)
Vielleicht hat ja einer von euch ne Idee, wie ich die Kollage vom aussehen her etwas netter gestalten soll. Ziel ist es halt, die 200 x 200 Pixel des "Scripts" zu füllen....
ich möchte mit GD eine Kollage aus Zufallsbildern eines ordners erstellen.
Das Problem ist nun, das die Bilder hochkant und normal sind, die Kollage soll aber dennoch flächendeckend und etwas transparent sein.
Nur genau das bekomme ich irgendwie nicht hin, vielleicht kann mir da ja jemand von euch weiterhelfen.
Hier schonmal mein Code bisher (ja ich weiß, kann noch stark optimiert werden)
PHP-Code:
$ordner = "./bilder/";
$verz = opendir($ordner);
$linkl = array();
while($file = readdir($verz))
{
if($file != "." && $file != "..")
{
array_push ($linkl, $file);
}
}
$file1 = $ordner.$linkl[array_rand($linkl, 1)];
$file2 = $ordner.$linkl[array_rand($linkl, 1)];
$file3 = $ordner.$linkl[array_rand($linkl, 1)];
$file4 = $ordner.$linkl[array_rand($linkl, 1)];
$file5 = $ordner.$linkl[array_rand($linkl, 1)];
$file6 = $ordner.$linkl[array_rand($linkl, 1)];
header("Content-type: image/png");
$bild1 = ImageCreateFromJpeg($file1);
$bild2 = ImageCreateFromJpeg($file2);
$bild3 = ImageCreateFromJpeg($file3);
$bild4 = ImageCreateFromJpeg($file4);
$bild5 = ImageCreateFromJpeg($file5);
$bild6 = ImageCreateFromJpeg($file6);
$background = imagecreatetruecolor(260,260); //leeres Bild 400x400
ImageColorTransparent($background, ImageColorAllocate($background, 0, 0, 0));
ImageAlphaBlending($background, false);
ImageCopyResampled($background, $background, 0, 0, 0, 0, $w, $h, ImageSX($background), ImageSY($background));
$groesse1 = GetImageSize($file1);
$groesse2 = GetImageSize($file2);
$groesse3 = GetImageSize($file3);
$groesse4 = GetImageSize($file4);
$groesse5 = GetImageSize($file5);
$groesse6 = GetImageSize($file6);
$skal = 0.8;
#1
ImageCopyResampled($background, $bild1, 0, 0, 0, 0, $groesse1[0]*$skal, $groesse1[1]*$skal, $groesse1[0], $groesse1[1]);
#2
ImageCopyResampled($background, $bild2, $groesse1[0]*$skal-3, 0, 0, 0, $groesse2[0]*$skal, $groesse2[1]*$skal, $groesse2[0], $groesse2[1]);
#3
ImageCopyResampled($background, $bild3, 10, $groesse2[1]*$skal-15 , 0, 0, $groesse3[0]*$skal, $groesse3[1]*$skal, $groesse3[0], $groesse3[1]);
#4
ImageCopyResampled($background, $bild4, $groesse3[0]*$skal-5, $groesse3[1]*$skal-10, 0, 0, $groesse4[0]*$skal, $groesse4[1]*$skal, $groesse4[0], $groesse4[1]);
#5
ImageCopyResampled($background, $bild5, $groesse3[0]*$skal-5, $groesse3[1]*$skal-5, 0, 0, $groesse5[0]*$skal, $groesse5[1]*$skal, $groesse5[0], $groesse5[1]);
#6
ImageCopyResampled($background, $bild6, $groesse5[0]*$skal-5, $groesse5[1]*$skal-10, 0, 0, $groesse6[0]*$skal, $groesse6[1]*$skal, $groesse6[0], $groesse6[1]);
Imagepng($background);
?>
Vielleicht hat ja einer von euch ne Idee, wie ich die Kollage vom aussehen her etwas netter gestalten soll. Ziel ist es halt, die 200 x 200 Pixel des "Scripts" zu füllen....