업로드 이미지 일괄 워터마크 적용하기 정보
업로드 이미지 일괄 워터마크 적용하기본문
이미 올라온 소스인지 검색을 해 봤는데 몇 안되는 게시물에 없는것 같아서 올려봅니다.
저의 홈에서 이용하던 걸 올립니다.
워터마크 테스트용 이미지 첨부합니다. 그누보드/img/ 디렉토리에 넣으시면 됩니다.
그리고 질문하셔도 설명 못 드립니다^^
적용하고 싶은 게시판의 "write_update.skin.php"를 아래 소스로 바꾸시면 됩니다.
아래 소스는 이미지 리사이즈 적용 소스이니..원치 않으시면 주석달린곳을 참고 하시면 됩니다.
<?
// 자신만의 코드를 넣어주세요.
$data_path = $g4[path]."/data/file/$bo_table";
$thumb_path = $data_path.'/thumb';
$sql2=" select * from $g4[board_file_table] where bo_table = '$bo_table' and wr_id = '$wr_id' order by bf_no asc";
$results2 = sql_query($sql2);
for ($d=0; $row2=sql_fetch_array($results2); $d++) {
if ($_FILES[bf_file][name][$d])
{
$file = $data_path .'/'. $row2[bf_file];
if (preg_match("/\.(jp[e]?g|gif|png)$/i", $file))
{
$size = getimagesize($file);
if ($size[2] == 1)
$src = imagecreatefromgif($file);
else if ($size[2] == 2)
$src = imagecreatefromjpeg($file);
else if ($size[2] == 3)
$src = imagecreatefrompng($file);
else
break;
$rate = $board[bo_image_width] / $size[0]; // 리사이즈를 원치않으면 여기서부터~~~
$height = (int)($size[1] * $rate);
if ($size[0] > $board[bo_image_width]){
@unlink($data_path.'/'.$row2[bf_file]);
$dst = imagecreatetruecolor($board[bo_image_width], $height);
imagecopyresampled($dst, $src, 0, 0, 0, 0, $board[bo_image_width], $height, $size[0], $size[1]);
imagejpeg($dst, $data_path.'/'.$row2[bf_file], $board[bo_2]); //혹 업로드 이미지 깨지면 여긴 주석처리하시고 바로 아래 껄 이용하세요..
// imagepng($dst, $data_path.'/'.$row2[bf_file], $board[bo_2]); //주석 해제
chmod($data_path.'/'.$row2[bf_file], 0606);
$temp = @getimagesize(addslashes($file));
} // 리사이즈를 원치않으면 여기까지 삭제 & 주석처리하면 됨.
$wmFile = $g4[path]."/img/logo_mark.gif"; // 워터마크 이미지 주소
$wmImg = imageCreateFromGIF($wmFile);
$size = getimagesize($file);
if ($size[2] == 1)
$jpegImg = imagecreatefromgif($file);
else if ($size[2] == 2)
$jpegImg = imagecreatefromjpeg($file);
else if ($size[2] == 3)
$jpegImg = imagecreatefrompng($file);
else
break;
$wmX=imageSX($jpegImg) - imageSX($wmImg);
$wmY=imageSY($jpegImg) - imageSY($wmImg);
imageCopyMerge($jpegImg, $wmImg, $wmX, $wmY, 0, 0, imageSX($wmImg), imageSY($wmImg), 90);
ImageJPEG($jpegImg, $file, 90);
}
}
}
?>
에러 나시는 분은 댓글 남겨주세요....
9
댓글 26개
맨위 상단에..
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
?>
이거 추가하시구요~
잘적용이 되네요..
혹시 이전에 작성되었던 게시물에도 적용이되게
할수는 없는지요?
용량이큰 이미지도 리사이즈해주니까 용량거품이 쭉~ 빠지네요..
근데..로고는 어떻게 제작하면 안깨질까요?
다른건 다 잘되는데..로고가 깨지네요 ㅋㅋ
주이님 / 아마 제가 알기론 불가능한듯 싶은데,,,혹 고수분들께선 알고 계실지도 모르겠습니다..
케케님/ 심심혀님/ 로고가 깨진다는건 워터마크 이미지가 검게 나온단 말씀인지요?...워터마크 이미지는 배경이 투명처리 되어야 될겁니다..그리고 이미지 리사이즈 적용을 안 하면 이미지 크기에 따라서 워터마크 크기도 유동적입니다...
로고를 원본 로고처럼 나오게 할수는 없을까요?
$wmY=imageSY($jpegImg) - imageSY($wmImg);
imageCopyMerge($jpegImg, $wmImg, $wmX, $wmY, 0, 0, imageSX($wmImg), imageSY($wmImg), 50);
ImageJPEG($jpegImg, $file, 100);
저는 이렇게 했습니다.
기본값은 90,90으로 되어 있는데 조금 바꾸었습니다.
그리고 로고 이미지는 바탕을 투명으로 하지 마시고 옅은 칼라로 한다음 제가 50으로 맞추어 넣은 것에서 투명도 조정을 하시면 어느 정도 원하시는 효과가 있지 않을까 생각합니다.
가장무난한게...힌글씨에 테두리를 1px정도의 약간 검은색을 입혀주시는게 가장 잘 나올겁니다.
그리고 포샵에서 여러가지 응용을 하시면 만족할만한 결과물이 나올것 같습니다.
원하는 결과는 본인의 몫이겠죠?...^^
암튼 건투를 빕니다.
위와같이 깨집니다 ㅡ.ㅡ 어떻게 해야할까요..
참, 업로드된 이미지 모두가 깨지는게 아니고 3~4개 게시물 업로드하고 5~6번째 게시물에 저러네요..
어떨땐 10개올리면 저러고 ㅡ.ㅡ
적용할 만한 팁이네요. 감사합니다.