Watermarks!
bambino - 11/03/2006 18:24 (laatste wijziging 13/03/2006 17:23)
HTML interesse
Hallo,
ik ben bezig met een watermark script te maken. Maar het werkt ALLEEN van gif naar gif (dus gif watermark of .gif image). De rst werkt niet! (enkel png -> png heb ik niet geprobeerd, en jpg is niet transparant te maken, dus dat is toch nutteloos). Ik snap het helemaal niet, ik gebruik dit script.
<?php
error_reporting(E_ALL);
//header('content-type: image/jpeg');
$image = "pajot.jpeg";
$watermark_1 = "watermark.gif";
$watermark = imagecreatefromgif($watermark_1);
imagealphablending($watermark, FALSE);
imagesavealpha($watermark, TRUE);
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);
$size = getimagesize($image);
$image = imagecreatefromjpeg($image);
$x = $size[0] - $watermark_width - 10;
$y = $size[1] - 40;
imagecopymerge($image, $watermark, $x, $y, 0, 0, $watermark_width, $watermark_height, 100);
imagejpeg($image);
imagedestroy($image);
imagedestroy($watermark);
?>
<?php
//header('content-type: image/jpeg');
$image = "pajot.jpeg" ;
$watermark_1 = "watermark.gif" ;
$watermark = imagecreatefromgif( $watermark_1 ) ;
imagealphablending( $watermark , FALSE ) ;
imagesavealpha( $watermark , TRUE ) ;
$watermark_width = imagesx( $watermark ) ;
$watermark_height = imagesy( $watermark ) ;
$image = imagecreatefromjpeg( $image ) ;
$x = $size [ 0 ] - $watermark_width - 10 ;
$y = $size [ 1 ] - 40 ;
imagecopymerge( $image , $watermark , $x , $y , 0 , 0 , $watermark_width , $watermark_height , 100 ) ;
imagejpeg( $image ) ;
imagedestroy( $image ) ;
imagedestroy( $watermark ) ;
?>
Als ik nu alles verander naar .gif, dan werkt het dus wel. Ik dacht dat het aan mij lag, maar ik heb een paar andere scripts opgezocht (er staat er hier ook een), en daar krijg ik OVERAL hetzelfde probleem. HELP PLZ
14 antwoorden
Gesponsorde links
bambino - 11/03/2006 18:31 (laatste wijziging 11/03/2006 18:37)
HTML interesse
probeer het eens uit zou ik zeggen, lukt bij mij echt niet...
dan krijg je dit,
<?
header('content-type: image/jpeg');
$image = "pajot.jpg";
$watermark_1 = "watermark.png";
$watermark = imagecreatefrompng($watermark_1);
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);
$size = getimagesize($image);
$image = imagecreatefromjpeg($image);
$x = $size[0] - $watermark_width - 5;
$y = 5;
imagecopymerge($image, $watermark, $x, $x, 0, 0, $watermark_width, $watermark_height, 100);
imagejpeg($image);
imagedestroy($image);
imagedestroy($watermark);
?>
<?
header ( 'content-type: image/jpeg' ) ;
$image = "pajot.jpg" ;
$watermark_1 = "watermark.png" ;
$watermark = imagecreatefrompng( $watermark_1 ) ;
$watermark_width = imagesx( $watermark ) ;
$watermark_height = imagesy( $watermark ) ;
$image = imagecreatefromjpeg( $image ) ;
$x = $size [ 0 ] - $watermark_width - 5 ;
$y = 5 ;
imagecopymerge( $image , $watermark , $x , $x , 0 , 0 , $watermark_width , $watermark_height , 100 ) ;
imagejpeg( $image ) ;
imagedestroy( $image ) ;
imagedestroy( $watermark ) ;
?>
en bij mij leest hij de watermark nietgoed, en krijg ik een gekleurd vierkantje, en niet de echte afbeelding...
als je nie begrijpt wat ik bedoel, het bovenstaande script geeft dit :
http://area51.r...ermark.php
http://area51.r...ermark.png (watermark_png)
http://area51.r...ermark.gif
(watermark_gif)
http://area51.r.../pajot.gif (image_gif)
http://area51.r.../pajot.jpg (image_jpg)
http://area51.r.../pajot.png (image_png)
Rens - 11/03/2006 18:37 (laatste wijziging 11/03/2006 18:38)
Crew algemeen
Je zou het ook anders kunnen proberen.
Je leest de string van het plaatje in (file_get_contents() ).
Daarna zet je in een var de laatste paar tekens, dus na de laatste punt.
Dan loop je met een switch door de var heen:
<?PHP
$sBestand = "plaatje.jpg";
$sSource = file_get_contents($sBestand);
$aBestand = explode(".", $sBestand);
$sExt = $aBestand[(count($aBestand)-1];
switch($sExt)
{
case "gif":
imageGIF($sSource);
break;
case "png":
imagePNG($sSource);
break;
case "jpg":
imageJPEG($sSource);
break;
}
?>
<?PHP
$sBestand = "plaatje.jpg" ;
$aBestand = explode ( "." , $sBestand ) ; $sExt = $aBestand [ ( count ( $aBestand ) - 1 ] ; switch ( $sExt )
{
case "gif" :
imageGIF( $sSource ) ;
break ;
case "png" :
imagePNG( $sSource ) ;
break ;
case "jpg" :
imageJPEG( $sSource ) ;
break ;
}
?>
bambino - 11/03/2006 18:50
HTML interesse
da's net het probleem!!!!!!
ik kan toch geen .jpg als watermark gaan gebruiken?!
en ik gebruik jpg functies voor het jpg bestand, en gif functies voor het gif bestand....
rambo - 11/03/2006 19:03 (laatste wijziging 11/03/2006 19:03)
HTML beginner
Dit is de code die ik gebruik om een watermerk te maken, indertijd eens opgezocht in de commentaren die in de handleiding van php geplaatst waren:
<?php
function watermark($foto, $watermark, $destination) {
$watermarkfile_id = imagecreatefrompng(watermark);
imagealphablending($watermarkfile_id, FALSE);
imagesavealpha($watermarkfile_id, TRUE);
$sourcefile_id = imagecreatefromjpeg($foto);
$sourcefile_width = imagesx($sourcefile_id);
$sourcefile_height = imagesy($sourcefile_id);
$watermarkfile_width = imagesx($watermarkfile_id);
$watermarkfile_height = imagesy($watermarkfile_id);
$dest_x = $sourcefile_width - 160;
$dest_y = $sourcefile_height - 160;
imagecopy($sourcefile_id, $watermarkfile_id, $dest_x, $dest_y, 0, 0, $watermarkfile_width, $watermarkfile_height);
imagejpeg($sourcefile_id, $destination, 100);
imagedestroy($sourcefile_id);
imagedestroy($watermarkfile_id);
}
?>
<?php
function watermark( $foto , $watermark , $destination ) {
$watermarkfile_id = imagecreatefrompng( watermark) ;
imagealphablending( $watermarkfile_id , FALSE ) ;
imagesavealpha( $watermarkfile_id , TRUE ) ;
$sourcefile_id = imagecreatefromjpeg( $foto ) ;
$sourcefile_width = imagesx( $sourcefile_id ) ;
$sourcefile_height = imagesy( $sourcefile_id ) ;
$watermarkfile_width = imagesx( $watermarkfile_id ) ;
$watermarkfile_height = imagesy( $watermarkfile_id ) ;
$dest_x = $sourcefile_width - 160 ;
$dest_y = $sourcefile_height - 160 ;
imagecopy( $sourcefile_id , $watermarkfile_id , $dest_x , $dest_y , 0 , 0 , $watermarkfile_width , $watermarkfile_height ) ;
imagejpeg( $sourcefile_id , $destination , 100 ) ;
imagedestroy( $sourcefile_id ) ;
imagedestroy( $watermarkfile_id ) ;
}
?>
Werkt hier perfect met een png-watermerk en jpg-bestanden.
bambino - 11/03/2006 19:23 (laatste wijziging 11/03/2006 19:30)
HTML interesse
dus jij gebruikt gewoon imagecopy en niet imagecopymerge?
Dan kan ik die transparency niet gebruiken, maar dit is toch al iets, zien of het werkt. Bedankt
Gvd, dat werkt ook niet, het output gewoon
"http://localhost/various/watermark.php" (dat is men output) <_<
Maarten - 11/03/2006 19:58
Erelid
Haal de header() erboven eens weg, dus wss
<?php
header('Content-Type: image/jpeg');
?>
<?php
header ( 'Content-Type: image/jpeg' ) ; ?>
Of iets dergelijks.. als je die weghaalt worden er waarschijnlijk fouten getoond waaruit je wel iets kan afleiden..
Maarten - 11/03/2006 20:34
Erelid
Zet dan ook even error_reporting(E_ALL) bovenaan.
Gesponsorde links
Dit onderwerp is gesloten .