Avatar billede whyme Nybegynder
16. marts 2006 - 19:55 Der er 9 kommentarer og
1 løsning

Indsæt billeder på koordinater i et stort billede via GDLib

Hej eksperter,

Jeg håber dette kan lade sig gøre, og at det er noget som der kan "forklares".

Hvis jeg har et 1000 x 1000 pixel billede som er tomt, og gerne vil hive lad os sige 3 billeder ind, og sætte dem på bestemte koordinater i det 1000 x 1000 pixel billede, og bagefter outputte det, til et enkelt stort billede... er dette muligt?

- Hvis ja...

Nogen der evt. kan forklare hvordan...

På forhånd mange tak
Avatar billede jakobdo Ekspert
16. marts 2006 - 20:20 #1
Det er muligt ja!
Du skal gøre det ved først at indlæse billeder via imagecreatefromjpeg/gif/png eller hvilken type det måtte være.
Så skal du merge dem via imagecopymerge().
Skal du bruge mere info, eller vil du prøve lidt selv?
Avatar billede whyme Nybegynder
16. marts 2006 - 23:03 #2
jakobdo:
Jeg kender kun til det "jordnære" altså til at lave et enkelt billede eller noget i denne stil. Men jeg har ikke nogen anelse hvordan jeg skal gøre hvis jeg har 6 billeder som skal ligge bestemte steder på bestemte koordinater. Jeg har kun selve starten... noget i stil med:

<?php
  $bigImage = ImageCreateFromJPEG("/images/mioimage.jpg");
 
  */
  Kode her til at indsætte nogen billeder på det store billeder
  via koordinater.
  /*
 
  header("content-type: image/jpeg");
 
  ImageJPEG($bigImage); // output to browser
 
  ImageDestroy($bigImage);
?>
Avatar billede jakobdo Ekspert
17. marts 2006 - 11:53 #3
Prøv at se her: http://www.codebreaker.dk/exp/695762.php

Og koden er her:
<?php
//http://www.eksperten.dk/spm/695762

function LoadPNG($imgname)
{
    $im = @imagecreatefrompng($imgname); /* Attempt to open */
    if(!$im)
    {
        /* See if it failed */
        $im  = imagecreate(20, 20); /* Create a blank image */
        $bgc = imagecolorallocate($im, 255, 255, 255);
        $tc  = imagecolorallocate($im, 0, 0, 0);
        imagefill($im, 0, 0, $bgc);
        /* Output an errmsg */
        imagestring($im, 1, 5, 5, "Error loading $imgname", $tc);
    }
    return $im;
}

header ("Content-type: image/png");
$im = @imagecreatetruecolor(500, 500) or die("Cannot Initialize new GD image stream");

$img[1] = LoadPNG("pic1.png");
$img[2] = LoadPNG("pic2.png");
$img[3] = LoadPNG("pic3.png");
$img[4] = LoadPNG("pic4.png");
$img[5] = LoadPNG("pic5.png");
$img[6] = LoadPNG("pic6.png");

for($i = 1; $i <= 6; $i++)
{
    imagecopymerge ($im, $img[$i], rand(0,480), rand(0,480), 0, 0, 20, 20, 100);
}

imagepng($im);
imagedestroy($im);

?>

Koordinaterne styres via rand(0,480)
Avatar billede whyme Nybegynder
17. marts 2006 - 23:29 #4
Det ser jo helt perfekt ud og virker og det hele, mange tak. :)

Vil lige høre... lige nu er baggrunden sort... hvordan er det muligt at sætte sit eget billede ind i det script i stedet for sort farve?
Avatar billede whyme Nybegynder
18. marts 2006 - 00:32 #5
Skal lige sige at det er et transparent baggrundsbillede i PNG format, hvis det skulle ændre dit svar :)
Avatar billede jakobdo Ekspert
18. marts 2006 - 09:01 #6
Hvis du har dit eget billede og vil bruge det som baggrund, så retter du:
$im = @imagecreatetruecolor(500, 500) or die("Cannot Initialize new GD image stream");
til:
$im = LoadPNG("DitBaggrundsbillede");
//Jeg mener så der vil være nogle problemer når der arbejdes med transparet. (men det må vi evt tage derfra)
Avatar billede whyme Nybegynder
18. marts 2006 - 17:10 #7
Mange tak!

Indtil videre ser det ud til at virke helt perfekt, jeg leger lige lidt og ser... det ser ud til at være transparent og det hele.
Avatar billede jakobdo Ekspert
18. marts 2006 - 17:14 #8
Og et svar så!
Avatar billede whyme Nybegynder
19. marts 2006 - 19:27 #9
Mange tak skal du have!
Avatar billede jakobdo Ekspert
19. marts 2006 - 19:29 #10
Jeg takker for point!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester