Avatar billede pondo Nybegynder
12. april 2007 - 09:13 Der er 3 kommentarer og
1 løsning

Overlay med resize uden at gemme

Hejsa,

Jeg har vil lave en side der viser en masse billeder men med ramme om, som de gør ved billederne på www.newz.dk .

Jeg har kodet følgende(takket være threads her):
<?
    //Filer der skal bruges som grundbillede og overlay
    $ground = "pic.gif";
    $overlay = "overlay.gif";
   
    //Placering af overlay på grundbilledet
    $pos_x = 0;
    $pos_y = 0;

    //Indlæse grundbillede og overlay
    $im_ground = imagecreatefromgif($ground);
    $im_overlay = imagecreatefromgif($overlay);

    //Placer overlay på grundbillede
    imagecopy($im_ground, $im_overlay, $pos_X, $pos_y, 0, 0, imagesx($im_overlay), imagesy($im_overlay));

    //Spyt billedet ud til browseren
    imagepng($im_ground);
?>

Dette virker fint, men jeg vil resize $ground så det har samme størrelse som $overlay, men kun til visning så behøver vel ikke at gemme det resizede $ground for at smelte dem sammen til det result der sendes retur ?!?
Avatar billede jakobdo Ekspert
12. april 2007 - 10:57 #1
Du kan loade $ground og resize så det passer dit billede og herefter smide det til brugeren.
Og jo, det kan godt laves uden at billedet skal gemmes.
Avatar billede pondo Nybegynder
12. april 2007 - 14:03 #2
Kan du give et eksempel ? har kun fundet nogle mega avancerede og plads krævende scripts til at resize.. er der ikke en nem måde at gøre det på ?
evt noget lignende $ground.setsize(50,70); etc.
Avatar billede jakobdo Ekspert
12. april 2007 - 14:27 #3
Du bør kunne bruge denne funktion:

function resize( $filename, $newfilename, $maxw, $maxh )
{
    $srcim = imagecreatefromjpeg( $filename );
    $ow = imagesx( $srcim );
    $oh = imagesy( $srcim );
    $wscale = $maxw / $ow;
    $hscale = $maxh / $oh;
    $scale = ( $hscale < $wscale ? $hscale : $wscale );
    $nw = round( $ow * $scale, 0 );
    $nh = round( $oh * $scale, 0 );
    $dstim = imagecreatetruecolor( $nw, $nh );
    imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh );
    imagejpeg( $dstim, $newfilename, 85 );
    imagedestroy( $dstim );
    imagedestroy( $srcim );
    return file_exists($newfilename);
}

Dog skal funktionen lige rettes til, så den arbejde med image_ressources og ikke billede_filer
Avatar billede pondo Nybegynder
12. april 2007 - 14:28 #4
Takker for interressen, fandt selv frem til det. Her koden tilrettet, så den retter size og samler uden at oprette og gemme nyt billede.

Koden:
<?
//Filer der skal bruges som grundbillede og overlay
$ground = "pic.gif";
$overlay = "overlay.gif";
   
//Placering af overlay på grundbilledet
$pos_x = 0;
$pos_y = 0;

//Indlæse grundbillede og overlay
$im_ground = imagecreatefromgif($ground);
$im_overlay = imagecreatefromgif($overlay);

// Get original width and height
$width = imagesx($im_ground);
$height = imagesy($im_ground);

// New width and height
$new_width = 118;
$new_height = 79;

// Resample
$image_resized = imagecreatetruecolor($new_width, $new_height);
imagecopyresampled($image_resized, $im_ground, 0, 0, 0, 0, $new_width, $new_height, $width, $height);


//Placer overlay på grundbillede
imagecopy($image_resized, $im_overlay, $pos_X, $pos_y, 0, 0, imagesx($im_overlay), imagesy($im_overlay));

//Spyt billedet ud til browseren
imagepng($image_resized);
?>
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