Avatar billede inctor Nybegynder
12. oktober 2008 - 10:47 Der er 6 kommentarer og
1 løsning

underligt watermark problem

Hej Alle,

Jeg har et underligt problem når jeg prøver at lave vandmærke på mine billeder.

Eksempel:
http://inctor.net/upl/

Mit script er som følger:

<?
class water_mark {

    function apply($watermark, $img) {

        header('content-type: image/jpeg');

        $watermark = imagecreatefrompng($watermark);
        $watermark_width = imagesx($watermark);
        $watermark_height = imagesy($watermark);
        $image = imagecreatetruecolor($watermark_width, $watermark_height);
        $image = imagecreatefromjpeg($img);
        $size = getimagesize($img);
        $dest_x = $size[0] - $watermark_width -5;
        $dest_y = $size[1] - $watermark_height -5;
        imagecopymerge($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, 100);
        imagejpeg($image);
        imagedestroy($image);
        imagedestroy($watermark);
    }
}

water_mark::apply('Sample-trans.png','IMG_0150.JPG'); 
?>

Hvorfor bliver billedet så underligt, billedet blir ikke gennemsigtigt som det skulle.
Avatar billede jakobdo Ekspert
12. oktober 2008 - 11:01 #1
Prøv at brug:
imagecopy($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, 100 );
i stedet for:
imagecopymerge(...);
Avatar billede jakobdo Ekspert
12. oktober 2008 - 11:01 #2
Alternativt kig på min kode her: http://www.eksperten.dk/artikler/1132
Avatar billede jakobdo Ekspert
12. oktober 2008 - 11:08 #3
Se her: http://www.codebreaker.dk/leg/848709.php
og koden er:

<?
//http://www.eksperten.dk/spm/848709

class water_mark {
    function apply($watermark, $img) {
        header('content-type: image/jpeg');
        $watermark = imagecreatefrompng($watermark);
        $watermark_width = imagesx($watermark);
        $watermark_height = imagesy($watermark);
        $image = imagecreatetruecolor($watermark_width, $watermark_height);
        $image = imagecreatefromjpeg($img);
        $size = getimagesize($img);
        $dest_x = $size[0] - $watermark_width -5;
        $dest_y = $size[1] - $watermark_height -5;
        imagecopy($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height);
        imagejpeg($image);
        imagedestroy($image);
        imagedestroy($watermark);
    }
}

water_mark::apply('http://inctor.net/upl/Sample-trans.png','http://inctor.net/upl/IMG_0150.JPG');
?>
Avatar billede inctor Nybegynder
12. oktober 2008 - 11:12 #4
Wee,
Det virkede :)
Er det pga manglende DOM angivning eller?
Avatar billede jakobdo Ekspert
12. oktober 2008 - 11:18 #5
Forskellen er imagecopy() og imagecopymerge()

og du får et svar.
Du kan sagtens bare nøjes med: water_mark::apply('Sample-trans.png','IMG_0150.JPG');
Jeg brugte bare fuld sti, da jeg ikke gad at hente billederne fra din side.
Avatar billede inctor Nybegynder
12. oktober 2008 - 11:20 #6
Aha,

Mange tak for hjælpen ;)
Avatar billede jakobdo Ekspert
12. oktober 2008 - 11:25 #7
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
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

IT-JOB

IT-Universitetet i København

CIO

Djurslands Bank

IT-udvikler