사이트 내 전체검색
PHP
[php] 워터마크 출력
로빈아빠
https://cmd.kr/php/512 URL이 복사되었습니다.

본문

워터마크 출력

폰트를 이용한 글자 입히기
<? 
$font_size = 100; // 글자 크기 
$opacity = 10; // 투명도 높을수록 불투명 
$font_path = "arial.ttf";  //폰트 패스 
$string = "waterMark";  // 찍을 워터마크 

$image = "11.jpg"; //이미지

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

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

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

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

// 적당히 워터마크가 붙을 위치를 지정 
$text_pos_x = $font_size; 
$text_pos_y = $h - $font_size; 

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>"; // 워터마크가 찍혀 저장된 이미지 출력 
?>


이미지 입히기
<?
/******************************************************************************
Program: waterMark.php
Description : 서비스 이미지에 워터마크 적용하기
Author      : Ryu Jee Hyoung
CreateDate  : 2007.01.18
CopyRight   : Copyright(c) 청명공자 All Right Reserved.
UpdateDate  :
Todo        :
 워터마크가 적용되도록 이미지 URL 변경
 - 사용법
 > $img_url = http://localhost/images/test.jpg;
 > $img_url = waterMark($img_url);
 > echo $img_url;
******************************************************************************/
function waterMark($image,$thumbW=null,$thumbH=null)
{
  $argTmp = $thumbW."|".$thumbH."|".$image;
  $arg = base64_encode($argTmp);
  $arg = urlencode($arg);
  $img_info = @getImageSize($image);
  if($img_info[2] == 6) {
    $chgURL = $image;
  }
  else {
    $chgURL = "http://DOMAIN/imgView.php?image=$arg";
  }

  return $chgURL;
}

$img_url = 'http://DOMAIN/11.png';
$img_url = waterMark($img_url);
echo "<img src='".$img_url."'>";
?>


<?
/******************************************************************************
Program: imgView.php
Description : 서비스 이미지에 워터마크 적용하기
Author      : Ryu Jee Hyoung
CreateDate  : 2007.01.18
CopyRight   : Copyright(c) 청명공자 All Right Reserved.
UpdateDate  :
Todo        :
******************************************************************************/
flush();
 
# 특정경로에 워터마크 처리할 이미지가 존재해야 함!!
# 워터마크 이미지는 필히 JPG 여야 합니다.
define("WATERMARK", "/home/NAME/public_html/12.jpg");
 
header("Content-type: image/jpeg");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
 
$photoTmp = base64_decode($image);
$photo = $photoTmp; # waterMarkImage($arg) 이런 형식(w,h가 지정이 안된 경우)으로 사용된 것
if (ereg("\|",$photo)) {
  # waterMarkImage($arg,100,50) 이런 형식(w,h가 지정된 경우)으로 사용된 것
  list($w1,$h1,$photo) = explode("|", $photoTmp, 3);
  $thumb_w1 = $w1;
  $thumb_h1 = $h1;
}
$photo = urldecode($photo); # %C24%.... 이런식으로 encode되어 오는 파일오류를 방지

$img_info = getImageSize($photo);
$photo = ereg_replace("%","%25",$photo);
$image_url = urldecode($photo);
if (!@fopen($image_url, "r")) {
  $dst_img = imagecreatefromjpeg(WATERMARK);
  $res = imagejpeg($dst_img, "", 100);
  die();
}
$file = pathinfo($image_url);
if ($img_info[2] == "1") {
  $file["extension"] = "GIF";
}
else if ($img_info[2] == "2") {
  $file["extension"] = "JPG";
}
else if ($img_info[2] == "3") {
  $file["extension"] = "PNG";
}
switch(strtoupper($file["extension"])) {
  case "JPEG":
    $src_img = imagecreatefromjpeg($image_url);
    break;
  case "JPG":
    $src_img = imagecreatefromjpeg($image_url);
    break;
  case "GIF":
    $src_img = imagecreatefromgif($image_url);
    break;
  case "PNG":
    $src_img = imagecreatefrompng($image_url);
    break;
}
$src_w = imagesx($src_img);
$src_h = imagesy($src_img);
$portion = $src_h / $src_w;
 
# w, h값이 있으면 thumbnail로 보여주기
if(!is_numeric($w1) || empty($w1)) $w1 = $img_info[0];
if(!is_numeric($h1) || empty($h1)) $h1 = $img_info[1];
$dest_w = $w1;
$dest_h = $h1;
$dst_img = imagecreatetruecolor($dest_w, $dest_h);
 
# 배경이미지 흰색으로 채우는 부분 - 투명이미지가 이상하게 보이는 현상을 방지
$white = imagecolorallocate($dst_img,255,255,255);
imagefill($dst_img, 0, 0, $white);

imagecopyresized($dst_img, $src_img, 0, 0, 0, 0, $dest_w, $dest_h, $src_w, $src_h);
imagedestroy($src_img);
flush();
$watermark = imagecreatefromjpeg(WATERMARK);
$watermark_w = imagesx($watermark);
$watermark_h = imagesy($watermark);
$resize_w = $watermark_w;
$resize_h = $watermark_h;
if ($dest_w < 100) {
  $resize_w = $watermark_w / 2;
  $resize_h = $watermark_h / 2;
}
else if ($dest_h < 100) {
  $resize_w = $watermark_w / 2;
  $resize_h = $watermark_h / 2;
}
$overlay_img = imagecreatetruecolor($watermark_w, $watermark_h);
imagecopyresized($overlay_img, $watermark, 0, 0, 0, 0, $resize_w, $resize_h, $watermark_w, $watermark_h);
imagedestroy($watermark);
$white = imagecolorallocate($overlay_img, 0xFF, 0xFF, 0xFF);
$black = imagecolorallocate($overlay_img, 0x00, 0x00, 0x00);
imagecolortransparent($overlay_img, $black);
 
# 워터마크 중앙에 배치
$offsetX = ($dest_w - $watermark_w - 3) / 2;
$offsetY = ($dest_h - $watermark_h - 3) / 2;
# 워터마크 좌상단에 배치
# $offsetX = 3;
# $offsetY = 3;
# 워터마크 우상단에 배치
# $offsetX = $dest_w - $watermark_w - 3;
# $offsetY = $dest_h - $watermark_h - 3;
 
# w, h값이 있으면 thumbnail로 보여주되 워터마크 적용안함!!
if (empty($thumb_w1) && empty($thumb_h1)) imagecopymerge($dst_img,$overlay_img,$offsetX,$offsetY,0,0,$watermark_w,$watermark_h, 30);
imagedestroy($overlay_img);
$res = imagejpeg($dst_img, "", 100);
imagedestroy($dst_img);
flush();
exit;
?>


관련 내용들..

9 2040620821_j2sAJ6i5_watermark.gif [제로보드] php 소스 워터마크~ 이미지를 업로드할때 워터마크를 새겨보자~ 1
8 제로보드 워터마크 적용 exif 정보를 사용중이었는데요. 1
7 썸네일 워터마크를 한글로 찍어주기 (그누보드) php 워터마크 소스 1
6 PHP를 이용하여 워터마크를 만들어보자 - php 이미지 폰트 변경 php 워터마크 1
5 이미지 워터마크 구현 php 소스 1
4 “ 이미지에 워터마크 붙이기 ” 1
3 썸네일,워터마크...각종 이미지 편집 손쉽게 하기 3
2 php.gif 워터마크 출력 (1) 195
1 썸네일, 워터마크

댓글목록

맥스님의 댓글

profile_image 맥스 작성일

오 ,,,,코드만 따로 입력하는 이건 어떻게 하셧나요? 저 이렇게 하고 싶었는데 ,,,
저기에 코드 배경으로 에디터 프로그램들 처럼 눈금 들어가 잇게 도 하고싶고 ,,,

PHP
871 (9/18P)

Search

Copyright © Cmd 명령어 3.147.48.105