GD 썸네일에 로고를 새겨보자
페이지 정보
조회
23,745
본문
이번에 준비할 건 테스트용으로 쓸 이미지 파일과 자신의 로고입니다. 로고는 일단 간단하게 GIF나 PNG 파일로 제작합니다. 대신 이미지 부분만을 적용하기 위해 배경이 없는 투명이미지를 제작합니다.
그리고 다음 소스를 만들어 함께 저장한 후 같은 디렉토리에 업로드 합니다.
테스트이미지 : test.jpg
로고이미지 : logo.png
소스 : test.php
----------- test.php 시작 --------------------------
<?
function thumbnail($file, $save_filename, $max_width, $max_height)
{
$src_img = ImageCreateFromJPEG($file); //JPG파일로부터 이미지를 읽어옵니다
$img_info = getImageSize($file);//원본이미지의 정보를 얻어옵니다
$img_width = $img_info[0];
$img_height = $img_info[1];
if(($img_width/$max_width) == ($img_height/$max_height))
{
$srcx=0;
$srcy=0;
$srcW=$img_width;
$srcH=$img_height;
}
elseif(($img_width/$max_width) < ($img_height/$max_height)) //ceil함수는 소수점을 올림합니다
{
$srcx=0;
$srcH=ceil(($img_width / $max_width) * $max_height);
$srcy=($img_height - $srcH) / 2;
$srcW=$img_width;
}
else{
$srcy=0;
$srcW=ceil(($img_height / $max_height) * $max_width);
$srcx=($img_width - $srcW) / 2;
$srcH=$img_height;
} //위의함수와는달리 센터값을 중심으로 썸네일크기에 맞게 남는부분은 잘라냅니다.
$dst_img = imagecreatetruecolor($max_width, $max_height); //타겟이미지를 생성합니다
ImageCopyResized($dst_img, $src_img, 0, 0, $srcx, $srcy, $max_width, $max_height, $srcW, $srcH); //타겟이미지에 원하는 사이즈의 이미지를 저장합니다
$overlay_img=ImageCreateFromPNG("logo.png");
$overlay_img_x = imageSX($overlay_img); //오버레이 이미지 사이즈 X값
$overlay_img_y = imageSY($overlay_img); //오버레이 이미지 사이즈 Y값
$offsetX = $max_width - ImageSX($overlay_img) - 3; //왼쪽 아래에서 3픽셀만큼 떨어진곳에 로고를 새깁니다
$offsetY = $max_height - ImageSY($overlay_img) - 3;
ImageAlphaBlending($dst_img, true); //배경을투명하게지정합니다
ImageCopy($dst_img,$overlay_img,$offsetX,$offsetY,0,0,$overlay_img_x,$overlay_img_y);
ImageInterlace($dst_img);
ImageJPEG($dst_img, $save_filename); //실제로 이미지파일을 생성합니다
ImageDestroy($dst_img);
ImageDestroy($src_img);
ImageDestroy($overlay_img);
}
?>
<? thumbnail("test.jpg","thumblogo.jpg","200","150") ?>
<span style="font-size:9pt;"><center>
원본이미지<br>
<img src='test.jpg'><br><br><br>
원본이미지를 200*150으로 축소한뒤 다음과 같은 로고이미지를 추가합니다.<br><br>
로고이미지
<br><img src='logo.png'><br><br><br>
원본과 로고이미지를 합성해 만들어진 이미지
<br><img src='thumblogo.jpg'>
</span>
----------- test.php 여기까지 -----------------------
결과 확인하러 가기 : http://rubusy.com/study/thumb02/logo.php
추가된 부분은 ImageAlphaBlending 과 ImageCopy 구문입니다. 전자는 배경이미지의 알파값을 true로 설정해 배경을 투명하게 지정하는 부분이고 후자는 두이미지를 합성해 $dst_img에 반환하는 구문입니다. 간단히 설명하자면...
ImageCopy($dst_img,$overlay_img,$offsetX,$offsetY,0,0,$overlay_img_x,$overlay_img_y);
원본이미지인 $dst_img와 오버레이할 이미지인 $overlay_img 를 합친다음 $dst_img로 반환합니다. 이때 오버레이할 이미지인 $overlay_img의 가로,세로 위치는 $offsetX,$offsetY 입니다. 그 다음의 0,0은 오버레이할 이미지의 시작점입니다. 오버레이할 이미지 모두를 집어넣을 것이므로 0,0에서 시작해야합니다. $overlay_img_x,$overlay_img_y 는 오버레이할 이미지의 너비와 높이구요..
ImageCopyResized와 비슷한 구조입니다. 위의 그림을 참고하세요~
출처 :: http://rubusy.com/bbs/view.php?id=pjboard&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=11
관련자료
등록된 댓글이 없습니다.