프리랜서 웹디자이너 RELATION RELATION.CO.KR

RELATION 로고

PHP 웹프로그래밍

[소스] 이미지 도용을 막기위한 워터마크 생성

2015.11.13
이미지 도용을 막기 위한 PHP워터마크 생성 소스
데모보기 : http://www.relation.co.kr/images_board/board_system_php/166/



<?php
function fileUp($file, $fileTo)
{
global $HTTP_POST_FILES;
echo $HTTP_POST_FILES[$file]['name'];

if($HTTP_POST_FILES[$file]['name'])
{
if (is_uploaded_file($tmp = $HTTP_POST_FILES[$file]['tmp_name']))
{
unlink($fileTo);
return move_uploaded_file($tmp, $fileTo);
unlink($tmp);
}
}
}

function LoadImage($fName, $string) {
$file_ext = strtolower(substr(strrchr($fName,"."), 1)); //확장자
switch ($file_ext) {
case "jpg": case "jpeg":
$im = ImageCreateFromJPEG($fName);
break;
case "gif":
$im = ImageCreateFromGIF($fName);
break;
case "png":
$im = ImageCreateFromPNG($fName);
break;
}

if (!$im) {
$px = 7.5 * strlen($string);
$im = ImageCreatetruecolor($px, 12);
$bgc = ImageColorAllocate($im, 255, 255, 255);
$tc = ImageColorAllocate($im, 0, 0, 0);

ImageColorTransparent($im, $bgc);
ImageString($im,3,0,0,$string,$tc);
}
return $im;
}


function thumbnail($file, $fileTo, $width, $height)
{
Global $thumbLogo;

$src_im = LoadImage($file, $string);

$size[0] = ImageSX($src_im);
$size[1] = ImageSY($src_im);

$offsetX = 0;
$offsetXa = 0;
$offsetY = 0;
$offsetYa = 0;

if($height*$size[0] < $width*$size[1]) {
$offsetY = round(($size[0] * $height) / $width);
$offsetY = $size[1] - $offsetY;
$offsetYa = round($offsetY / 2);
} else {
$offsetX = round(($size[1] * $width) / $height);
$offsetX = $size[0] - $offsetX;
$offsetXa = round($offsetX / 2);
}

$dst_im = ImageCreatetruecolor($width,$height); //결과물 이미지 생성
ImageCopyResampled($dst_im,$src_im,0,0,$offsetXa,$offsetYa,$width,$height,ImageSX($src_im)-$offsetX,ImageSY($src_im)-$offsetY);
//ImageCopyResampled($dst_im,$src_im,$offsetXa,$offsetYa,0,0,$width,$height,ImageSX($src_im),ImageSY($src_im));
//만들기
//ImageCopyResized
//gdImageCopyResampled

if ($thumbLogo["on"] == "yes")
{
$im = LoadImage($thumbLogo["img"], $thumbLogo["string"]);
if($im)
{
$offsetX = $width - ImageSX($im) - 3;
$offsetY = $height - ImageSY($im) - 3;
ImageCopyMerge($dst_im,$im,$offsetX,$offsetY,0,0,ImageSX($im),ImageSY($im), $thumbLogo["opacity"]);
// ImageCopyResized($dst_im,$im,$offsetX,$offsetY,0,0,ImageSX($im),ImageSY($im),ImageSX($im),ImageSY($im)); //만들기
}
}

$file_ext = strtolower(substr(strrchr($fileTo,"."), 1));
if($file_ext == "jpg") // 저장하기
return ImageJPEG($dst_im, $fileTo, $thumbLogo["quality"]);
else if($file_ext == "gif")
return ImageGIF($dst_im, $fileTo);
else if($file_ext == "png")
return ImagePNG($dst_im, $fileTo);

}

function addLogo($file, $fileTo)
{
Global $itemImgLogo;

$src_im = ImageCreateFromJPEG($file);
$im = LoadImage($itemImgLogo["img"], $itemImgLogo["string"]);

$offsetX = ImageSX($src_im) - ImageSX($im) - 3;
$offsetY = ImageSY($src_im) - ImageSY($im) - 3;

ImageCopyMerge($src_im,$im,$offsetX,$offsetY,0,0,ImageSX($im),ImageSY($im), $itemImgLogo["opacity"]);
// ImageCopyResized($dst_im,$im,$offsetX,$offsetY,0,0,ImageSX($im),ImageSY($im),ImageSX($im),ImageSY($im)); //만들기

return ImageJPEG($src_im, $fileTo, $itemImgLogo["quality"]);
}



// 손톱이미지 크기
$thumbWidth = "100";
$thumbHeight = "100";


// 손톱이미지에 로고 넣기
$thumbLogo["on"] = "yes";
$thumbLogo["img"] = "thumb_mark.png";
$thumbLogo["opacity"] = "100";
$thumbLogo["quality"] = "105";
//$thumbLogo["string"] = "Rpack";


// 아이템 이미지에 로고 넣기
$itemImgLogo["on"] = "yes";
$itemImgLogo["img"] = "waterMark.png";
$itemImgLogo["opacity"] = "100";
$itemImgLogo["quality"] = "100";
//$itemImgLogo["string"] = "Rpack.com";

// 이미지 저장
$dirImg = "img/";
$dirThumb = "thumb/";


// 이미지 파일 업로드
if(fileUp("img01", $dirImg.$LII.".jpg"))
{
$tmp1[1] = "1"; // 파일 업로드 확인
thumbnail($dirImg.$LII.".jpg", $dirThumb.$LII.".jpg", $thumbWidth, $thumbHeight); // 손톱이미지 생성
if($itemImgLogo["on"]){
addLogo($dirImg.$LII.".jpg", $dirImg.$LII.".jpg"); // 원본 이미지에 로고 삽입
}
}
?>


<form METHOD=POST ACTION="" enctype="multipart/form-data">
<INPUT TYPE="file" NAME="img01">
<INPUT TYPE="submit">
</form>


이 포스트 공유하기

글수정  글삭제 전체목록
<
 
1
           
검색    글쓰기
번호 제 목 작성자 작성일 조회수
중요 [서버] 보안서버 무료 SSL 구축 꿘쓰 2017.09.20 6086
중요 [MYSQL함수] PHP, MYSQL 기초 쿼리문 정리 꿘쓰 2011.04.15 7350
중요 [MYSQL PHP 함수] PHP, MYSQL 기초 쿼리문 정리   꿘쓰 2006.03.10 12625
186 [소스] 특정일 특정 날짜 구하기 작성글은 비공개로 설정 되었습니다. 꿘쓰 2020.08.31 1
185 [서버] URL 에서 파일 확장자(.html , .php) 없애기!!! 꿘쓰 2020.03.16 109
184 [소스] PHP function 테스트 꿘쓰 2020.03.05 120
183 [MYSQL PHP 함수] is_dir 꿘스 2020.01.31 121
182 [MYSQL PHP 함수] DB table 같은 이름 체크 꿘쓰 2019.12.13 155
181 [소스] 게시글 번호로 페이지 번호 구하기 댓글 없는 게시판 작성글은 비공개로 설정 되었습니다. 꿘쓰 2019.11.18 3
180 [소스] 페이지 이동, 페이지 자동이동 PHP 꿘쓰 2019.11.04 188
179 [MYSQL PHP 함수] PHP 현재 페이지명, 도메인명 URL 정보 꿘쓰 2019.06.24 280
178 [기타] PHP 소수점 올림,반올림, 버림 꿘쓰 2018.07.06 949
177 [기타] php를 이용한 mysql 엑셀 파일 만들기 꿘쓰 2019.07.24 1394
176 [MYSQL PHP 함수] 특정값 조회 where 컬럼명 in (값,,,,,,) 꿘쓰 2018.01.15 940
175 [서버] 보안서버 무료 SSL 구축 꿘쓰 2017.09.20 6086
174 [소스] LK Query 작성글은 비공개로 설정 되었습니다. 꿘쓰 2017.08.23 2
173 [소스] php xml 파일 생성하기 작성글은 비공개로 설정 되었습니다. 꿘쓰 2017.06.05 1
172 [소스] 네이버 신디케이션 날짜 변경 작성글은 비공개로 설정 되었습니다. 꿘쓰 2017.06.01 1
171 [소스] 날짜 계산(DATE_ADD) 꿘쓰 2017.05.08 1116
170 [소스] 기간별 호텔 룸가격 구하기 작성글은 비공개로 설정 되었습니다. 꿘쓰 2017.05.05 1
169 [소스] 기간 검색 작성글은 비공개로 설정 되었습니다. 꿘쓰 2017.05.05 3
168 [문자열함수] 알파벳 순서대로 출력하기 꿘쓰 2017.02.23 2094
167 [소스] PHP를 이용한 RSS 만들기 꿘쓰 2016.07.30 1410