Avatar billede a2p-dk Nybegynder
06. oktober 2010 - 11:48 Der er 6 kommentarer og
1 løsning

watermark: resize watermark også placer på mainPicture.

Hej.

Dette har naget mig i en rum tid nu, og det lader ikke til at jeg kan finde noget svar - overhovedet..

Jeg har et vandmærke jeg skal placere på et billede.
Dette mærke skal kunne justeres i størrelsen (bredte x højde) inden det bliver placeret på mit baggrundBillede.

Lige pt. kan jeg kun placere det på bgBillede, med dette script jeg har fundet:

[code]
<?php

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

$sw = explode("px", $_GET[ 'sw' ]);  $sw = $sw[0];
$sh = explode("px", $_GET[ 'sh' ]);  $sh = $sh[0];

$dx = explode("px", $_GET[ 'dx' ]);  $dx = $dest_x[0];
$dy = explode("px", $_GET[ 'dy' ]);  $dy = $dest_y[0]; 

$watermark = 'images/glasses/' . $_GET[ 'angel' ] . '.png';
$original = $_GET[ 'src' ];

$watermark = imagecreatefrompng($watermark);
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);
$image = imagecreatetruecolor($watermark_width, $watermark_height);
$image = imagecreatefromjpeg($original);
$size = getimagesize($original);
$dest_x = $size[0]/2 - $watermark_width/2 ;
$dest_y = $size[1]/2 - $watermark_height/2;

imagecopy($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height);
imagejpeg($image);
imagedestroy($image);
imagedestroy($watermark);

?>
[/code]

Som du kan se har jeg allerede informationer om hvor meget mærket skal reduseres til, igennem: $sw og $sw.


og igen har jeg $dx og $dy til at definere hvor på bgBilledet mærket skal sættes. men dem kan jeg jo bare skifte ud med $dest_x og $dest_y.


MVH
Andreas
Avatar billede a2p-dk Nybegynder
06. oktober 2010 - 11:49 #1
hov det ser lidt spøjst ud...

[code]
<?php

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

$sw = explode("px", $_GET[ 'sw' ]);  $sw = $watermark_width[0];
$sh = explode("px", $_GET[ 'sh' ]);  $sh = $watermark_height[0];

$dx = explode("px", $_GET[ 'dx' ]);  $dx = $dest_x[0];
$dy = explode("px", $_GET[ 'dy' ]);  $dy = $dest_y[0]; 

$watermark = 'images/glasses/' . $_GET[ 'angel' ] . '.png';
$original = $_GET[ 'src' ];

$watermark = imagecreatefrompng($watermark);
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);
$image = imagecreatetruecolor($watermark_width, $watermark_height);
$image = imagecreatefromjpeg($original);
$size = getimagesize($original);
$dest_x = $size[0]/2 - $watermark_width/2 ;
$dest_y = $size[1]/2 - $watermark_height/2;

imagecopy($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height);
imagejpeg($image);
imagedestroy($image);
imagedestroy($watermark);

?>


[/code]
Avatar billede a2p-dk Nybegynder
06. oktober 2010 - 11:50 #2
nåå...

rå kode:

<?php

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

$sw = explode("px", $_GET[ 'sw' ]);  $sw = $watermark_width[0];
$sh = explode("px", $_GET[ 'sh' ]);  $sh = $watermark_height[0];

$dx = explode("px", $_GET[ 'dx' ]);  $dx = $dest_x[0];
$dy = explode("px", $_GET[ 'dy' ]);  $dy = $dest_y[0]; 

$watermark = 'images/glasses/' . $_GET[ 'angel' ] . '.png';
$original = $_GET[ 'src' ];

$watermark = imagecreatefrompng($watermark);
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);
$image = imagecreatetruecolor($watermark_width, $watermark_height);
$image = imagecreatefromjpeg($original);
$size = getimagesize($original);
$dest_x = $size[0]/2 - $watermark_width/2 ;
$dest_y = $size[1]/2 - $watermark_height/2;

imagecopy($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height);
imagejpeg($image);
imagedestroy($image);
imagedestroy($watermark);

?>
Avatar billede majbom Novice
06. oktober 2010 - 12:26 #3
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);

kan du ikke bare selv angive en værdi her, i stedet for at tage dem fra billedets (dit watermark) originale størrelse?

og du kan bruge (div)(pre)(/pre)(/div) i stedet for (code)(/code)

selvfølgelig med [ ] i stedet for ( )
Avatar billede a2p-dk Nybegynder
06. oktober 2010 - 12:34 #4
problemet er at mærket så bliver skjult og ikke skaleret.

så hvis mærket er 200 px bredt og jeg siger $watermark_width = 100 px .

så er det kun de første 100 px af mærket jeg ser.



... tak for det tip.. (div)(pre) osv.
Avatar billede a2p-dk Nybegynder
06. oktober 2010 - 13:43 #5
.... sådan nu fik jeg kigget på: imagecopyresized og nu har jeg fået det til at virk.


<?php

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

$sw = explode("px", $_GET[ 'sw' ]);  $sw = $sw[0];
$sh = explode("px", $_GET[ 'sh' ]);  $sh = $sh[0];

$dx = explode("px", $_GET[ 'dx' ]);  $dx = $dx[0];
$dy = explode("px", $_GET[ 'dy' ]);  $dy = $dy[0];

$watermark = 'images/glasses/' . $_GET[ 'angel' ] . '.png';
$original = $_GET[ 'src' ];

list($bredde, $hojde) = getimagesize($watermark);
$watermark = imagecreatefrompng($watermark);
$new_watermark = imagecreate($sw , $sh);
imagecopyresized($new_watermark, $watermark, 0, 0, 0, 0, $sw, $sh, $bredde, $hojde);

$watermark_width = $sw;
$watermark_height = $sh;

$image = imagecreatetruecolor($watermark_width, $watermark_height);
$image = imagecreatefromjpeg($original);
$size = getimagesize($original);
$dest_x = $size[0]/2 - $watermark_width/2 ;
$dest_y = $size[1]/2 - $watermark_height/2;

imagecopy($image, $new_watermark, $dx, $dy, 0, 0, $watermark_width, $watermark_height);
imagejpeg($image);
imagedestroy($image);
imagedestroy($watermark);
imagedestroy($new_watermark);

?>
Avatar billede besoft Nybegynder
07. oktober 2010 - 20:08 #6
Du vil kunne reducere din kode gevaldigt, hvis du bruger iMagick.

Der ligger en den funktioner som du kan kalde direkte i PHP. Bla til at resize, uden at kende den præcise størrelse, men blot kender den maksimale størrelse på H & W. Så resizer den proportionalt.

Læs meget mere om det her: http://www.imagemagick.org/
Avatar billede a2p-dk Nybegynder
15. oktober 2010 - 16:41 #7
ja kender godt IMagick problemet er bare at mit webhotel ikke understøtter andet end GDlib. Men tak for tippet!

jeg har web10
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