2011-09-07 4 views
3

디렉토리의 모든 이미지에 워터 마크를 추가하려고합니다. www.example.com/private를 예로 들어 보겠습니다. 이 이미지 중 일부는 방대한 해상도를 가지고 있지만 다른 이미지는 상대적으로 정상이므로 내 워터 마크가 작은 이미지에서 잘 작동합니다. 워터 마크를 센터링하여도 큰 이미지의 원하는 부분을 잘라낼 수 있습니다.PHP를 사용하여 요청 된 이미지 전체에 워터 마크를 반복 할 수 있습니까?

그럼 내 질문은 수직 및 수평으로 이미지 전체에 워터 마크를 반복하는 PHP 스크립트를 작성하는 방법입니까? 적절한 워터 마킹 보호 기능을 제공해야한다는 것을 제외하고는 백엔드 개발에 대해 충분히 알지 못하므로 Google을 둘러 보았고 작동하지 않는 http://www.regardadesign.co.uk/blog/post/php-image-manipulation/15 만 찾을 수있었습니다.

<IfModule mod_rewrite.c> 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule \.(gif|jpeg|jpg|png)$ /admin/watermark.php [QSA,NC] 
</ifModule>" 

그리고이 watermark.php 파일의 스크립트입니다 :

<?php 
ini_set('memory_limit','200M'); 
$path = $_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI']; 
$image = imagecreatefromstring(file_get_contents($path)); 
$w = imagesx($image); 
$h = imagesy($image); 
$watermark = imagecreatefrompng('watermark.png'); 
$ww = imagesx($watermark); 
$wh = imagesy($watermark); 
imagecopy($image, $watermark, (($w/2)-($ww/2)), (($h/2)-($wh/2)), 0, 0, $ww, $wh); 
header('Content-type: image/jpeg'); 
imagejpeg($image); 
imagedestroy($image); 
imagedestroy($watermark); 
exit(); 
?> 

답변

4

이 있기 때문에 무슨 일이 일어나고 난/개인 디렉토리에 다음의 .htaccess 파일을 배치 한 지금까지

워터 마크를 한 번만 삽입합니다. 이미지 영역을 따라 워터 마크를 반복하면 트릭을 수행합니다.

$img_paste_x = 0; 
while($img_paste_x < $w){ 
    $img_paste_y = 0; 
    while($img_paste_y < $h){ 
     imagecopy($image, $watermark, $img_paste_x, $img_paste_y, 0, 0, $ww, $wh); 
     $img_paste_y += $wh; 
    } 
    $img_paste_x += $ww; 
} 
+0

내가 지금 시험이 코드를 coudn't,하지만 난 그것을 작동 희망 :

이 대한 imagecopy 라인을 교체합니다. – v42

+0

아니요, 불행히도이 작업이 효과가 없었습니다. 여전히 워터 마크가 중앙에 하나씩 만 배치되어 있으며 이제 워터 마크 이미지 대신 단색의 검정색 사각형이됩니다. – Ben

+0

오, 매개 변수가 잘못되었습니다. 나는 그것을 고쳤다 고 생각한다. – v42

관련 문제