Avatar billede bootup Nybegynder
21. december 2007 - 01:17 Der er 8 kommentarer og
1 løsning

Ligge et billede oven på et andet med gdlib

Hej

Jeg er ved at lave en fuld dynamisk side, og jeg ønsker at nogle uploadede jpg-billeder skal have rundet hjørnerne.

Man skal altså have en slags ramme oven på billederne.
Havede forestillet mig at jeg ville have en gif-fil, der var transparent, på nær i hjørnerne. Neden under skal man så have det uploadede jpg-billede.

Jeg mangler kun hjælp til at ligge dette gif billede oven på et jpg-billede. Skal ikke have hjælp til upload eller noget - kun selve billedescriptet.

Overlay:
http://peecee.dk/uploads/1207/60x60_white_corner_overlay.gif

Eks. på uploadet billede i jpg:
http://peecee.dk/uploads/1207/nederste_billede.jpg
Avatar billede fant0mas Nybegynder
21. december 2007 - 13:24 #1
Først border:
    //Add border to image function
    function drawBorder($img, $color, $thickness = 1)
    {
        $x1 = 0;
        $y1 = 0;
        $x2 = ImageSX($img) - $thickness;
        $y2 = ImageSY($img) - $thickness;
   
        for($i = 0; $i < $thickness; $i++)
        {
            ImageRectangle($img, $x1++, $y1++, $x2--, $y2--, $color);
        }
    }
Avatar billede fant0mas Nybegynder
21. december 2007 - 13:27 #2
$color_grey = imagecolorallocate($src_img,100,100,100);
drawBorder($mediumPicture, $color_grey, 1);

$mediumPicture skal så være dit billede.
Avatar billede fant0mas Nybegynder
21. december 2007 - 13:28 #3
Så runde hjørner funktionen:
    function makeCornersRound($corner, $mediumPicture, $nw, $nh){
   

    // Top-left corner
        $dest_x = 0; 
        $dest_y = 0; 
        imagecolortransparent($corner, $black);
        imagecopymerge($mediumPicture, $corner, $dest_x, $dest_y, 0, 0, 10, 10, 100);
   
    // Bottom-left corner
        $dest_x = 0; 
        $dest_y = $nh - 10;
        $rotated = imagerotate($corner, 90, 0);
        imagecolortransparent($rotated, $black);
        imagecopymerge($mediumPicture, $rotated, $dest_x, $dest_y, 0, 0, 10, 10, 100); 
   
    // Bottom-right corner
        $dest_x = $nw - 10; 
        $dest_y = $nh - 10; 
        $rotated = imagerotate($corner, 180, 0);
        imagecolortransparent($rotated, $black);
        imagecopymerge($mediumPicture, $rotated, $dest_x, $dest_y, 0, 0, 10, 10, 100); 
   
    // Top-right corner
        $dest_x = $nw - 10; 
        $dest_y = 0; 
        $rotated = imagerotate($corner, 270, 0);
        imagecolortransparent($rotated, $black);
        imagecopymerge($mediumPicture, $rotated, $dest_x, $dest_y, 0, 0, 10, 10, 100);   
    }
Avatar billede fant0mas Nybegynder
21. december 2007 - 13:33 #4
Hjørnet er 10x10 .png
$corner_source = imagecreatefrompng($prefix.'gfx/rounded_corner.png');
$corner = ImageCreateTrueColor(10, 10);

$nw=imagesx($mediumPicture);
$nh=imagesy($mediumPicture);

makeCornersRound($corner, $mediumPicture, $nw, $nh);
Avatar billede fant0mas Nybegynder
21. december 2007 - 13:35 #5
imagejpeg($mediumPicture, $medium_target, 90);
imagedestroy($mediumPicture);
Avatar billede bootup Nybegynder
21. december 2007 - 16:07 #6
sådan set vil jeg bare ligge mit overlay oven på et billede. men jeg prøver lige det du skriver, så vender ejg tilbage.
Avatar billede fant0mas Nybegynder
21. december 2007 - 16:31 #7
Nå, men med forskellige billedstørrelser, så kan du jo ikke bare ligge en skabelon ovenpå. Men har du en fast størrelse, så er det selvfølgelig løsningen.
Avatar billede bootup Nybegynder
21. december 2007 - 17:44 #8
Det er samme billedestørrelse, da der ved upload vil blive tjekket om det er korekt billede størelse.

Jeg kan godt se det smarte i dit script - at det passer på alle billeder. Utroligt smart.

Men sådan her har jeg altså fået mit til at virke (meget simpelt ja):

<?php
header("Content-type: image/jpeg");

$img_src = "nederste_billede.jpg";
$img_w = 60;
$img_h = 60;
$img_bg = imagecreatefromjpeg($img_src); //Baggrundsbillede (nederste lag)
$img_ol = imagecreatefromgif($img_w."x".$img_h."_white_corner_overlay.gif"); //Overlay

imagecopymerge($img_bg, $img_ol, 0, 0, 0, 0, $img_w, $img_h, 100);
imagejpeg($img_bg, NULL, 95);
imagedestroy($img_bg);
imagedestroy($img_ol);
?>

Smid et svar, var ikke kommet vidre uden din hjælp ;)
Avatar billede bootup Nybegynder
23. december 2007 - 23:48 #9
Spørgsmålet er hvertfald besvaret, jeg lukker bare selv.

Points betyder vel heller ikke så meget, ellers skriver du bare.... så skal du nok få alle dem jeg har :P
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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