2008. 10. 14.

php_gd를 이용한 이미지 워터마크 출력



<?

/*
    이미지에 워커마크 삽입
    작성자 전희승
 */


$opacity = 70; // 투명도 높을수록 불투명
$font_path = "./ERASBD.TTF";  //폰트 패스
$string = "onUniv.com";  // 찍을 워터마크

$image = "test.jpg";

$image_name = explode(".",$image);
$image_targ = "test.jpg";  // 워터마크가 찍혀 저장될 이미지

$image_org = $image; // 원본 이미지를 다른 이름으로 저장
$image = imagecreatefromjpeg($image); // JPG 이미지를 읽고


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

$font_size = $w/11; // 글자 크기

$text_color = imagecolorallocate($image,255,255,255); // 텍스트 컬러 지정

// 적당히 워터마크가 붙을 위치를 지정

$text_pos_x = $font_size;

for($i=$font_size+20; $i<=$h-$font_size-20; $i+=$font_size+30) {
$text_pos_y = $i;
imagettftext($image, $font_size, 0, $text_pos_x, $text_pos_y, $text_color, $font_path, $string);  // 읽은 이미지에 워터마크를 찍고
}
$image_org = imagecreatefromjpeg($image_org); // 원본 이미지를 다시한번 읽고
 
imagecopymerge($image,$image_org,0,0,0,0,$w,$h,$opacity); // 원본과 워터마크를 찍은 이미지를 적당한 투명도로 겹치기

imagejpeg($image, $image_targ, 90); // 이미지 저장. 해상도는 90 정도
 
imagedestroy($image);
imagedestroy($image_org);


echo "<img src=$image_targ>"; // 워터마크가 찍혀 저장된 이미지 출력



/* 이미지에 워터마크 삽입 완료 */
?>



실행전 이미지


실행후 이미지



※ 참고
실행후 이미지의 용량이 작아진것을 보아 이미지가 깨질 가능성이 있어보인다.