2012-08-09 6 views
4

이미지의 1/4을 차지하도록 워터 마크의 크기를 자동으로 조정하려고합니다. 워터 마크 코드가 작동하지만 제대로 크기를 조정할 수 없습니다.PHP의 동적 워터 마크 PNG 크기 조정

<?php 

$image = $_GET['src']; 
$path_parts = pathinfo($image); 
$extension=strtolower($path_parts['extension']); 
$size = (imagesx($image)/2); 

$stamp = ImageCreateFromPNG("watermark.png"); 
ImageAlphaBlending($stamp,true); 
ImageSaveAlpha($stamp,true); 



$w = imagesx($stamp); 
$h = imagesy($stamp); 

if($w==0 or $h==0) die("ERROR - zero image size"); 

$percent = $size/(($w>$h)?$w:$h); 
$nw = intval($w*$percent); 
$nh = intval($h*$percent); 

$stamp_resized = ImageCreateTrueColor($nw,$nh); 

ImageAlphaBlending($stamp_resized,false); 
ImageSaveAlpha($stamp_resized,true); 

if(!empty($transparent_color)) 
{ 
    $transparent_new = ImageColorAllocate($stamp_resized,$transparent_color['red'],$transparent_color['green'],$transparent_color['blue']); 
    $transparent_new_index = ImageColorTransparent($stamp_resized,$transparent_new); 
    ImageFill($stamp_resized, 0,0, $transparent_new_index); 
} 

if(ImageCopyResized($stamp_resized,$stamp, 0,0,0,0, $nw,$nh, $w,$h)) 
{ 
    ImageDestroy($stamp); 
    $stamp = $stamp_resized; 
} 




//Everything from here on works perfect 
if(file_exists($image)){ 
    if ($extension == 'gif')$im = imagecreatefromgif($_GET['src']); 
    if ($extension == 'jpg') { 

     $im = imagecreatefromjpeg($_GET['src']); 

     $marge_right = 10; 
     $marge_bottom = 10; 
     $sx = imagesx($stamp); 
     $sy = imagesy($stamp); 


     imagecopy($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, $sx, $sy); 

    } 
} 
else{ 
$im = imagecreatefromgif('images/no_picture.gif'); 
} 



// Output and free memory 
header('Content-type: image/jpeg'); 
imagejpeg($im); 
imagedestroy($im); 
?> 

나는 오류 로그를 확인하고 이러한 오류가 있었다 :

[Thu Aug 09 16:47:05 2012] [error] [client 24.224.164.149] PHP Warning: imagesx() expects parameter 1 to be resource, string given in {path removed}/watermark.php on line 15 

[Thu Aug 09 16:47:05 2012] [error] [client 24.224.164.149] PHP Warning: imagecreatetruecolor(): Invalid image dimensions in {path removed}/watermark.php on line 32 

[Thu Aug 09 16:47:05 2012] [error] [client 24.224.164.149] PHP Warning: imagealphablending() expects parameter 1 to be resource, boolean given in {path removed}/watermark.php on line 34 

[Thu Aug 09 16:47:05 2012] [error] [client 24.224.164.149] PHP Warning: imagesavealpha() expects parameter 1 to be resource, boolean given in {path removed}/watermark.phpp on line 35 

[Thu Aug 09 16:47:05 2012] [error] [client 24.224.164.149] PHP Warning: imagecopyresized() expects parameter 1 to be resource, boolean given in {path removed}/watermark.php on line 44 

답변

3

이 밝혀 나는 이미지 ($ 이미지)에 imagesx 경로를 통과 한이 아니라 이미지 리소스 ($ 메신저) 자체 . 코드를 약간 재지 정하여 이미지 크기를 조정하기 전에 jpg를로드합니다.

모든 계단식 오류가 수정되어 이제는 정상적으로 작동합니다. 이야기의 도덕적 오류 로그를 확인하십시오.

0

그것은 imagesx 이미지 생성 기능에 의해 생성 된 이미지 리소스를 필요로하고 당신이 그것을 SRC를 준 이후

$size = (imagesx($image)/2); 

이 문제가 될 수 있음 같습니다.

+0

그게 전부입니다. 나는 그것을 경로가 아닌 자원으로 나눠 주었다. – evandentremont