사이트 내 전체검색
PHP
제로보드 워터마크 적용 exif 정보를 사용중이었는데요.
로빈아빠
https://cmd.kr/php/563 URL이 복사되었습니다.

본문

exif 정보를 사용중이었는데요.
사진 업로드 전에 글자 세기는거 귀찮아서..
워터마킹을 적용 해보려고 해봤더니...
exif 정보가 없어져 버리더군요.
이미지에 글자를 넣으면서 이미지 파일을 변경해 버리기 때문에 정보가 사라져 버리는거 같은데요...

워터마크를 사용 하면서 Exif 이미지 정보 그대로 살려둘순 없는건가요...

링크는 워터마크 적용팁인데요...
http://www.zeroboard.com/842246


해당 내용은 다음과 같습니다.

제로보드 write_ok.php 파일은 다음 내용만 추가하라고 되어 있습니다.
=========================================================================
        include "_head.php";
        include "water.php"; //워터마크인클루드추가
-------------------------------------------------------
if(eregi(".jpg|.png|.jpeg|.gif|.bmp",$file_name1)) watermark($file_name1,"","images/water.png");
if(eregi(".jpg|.png|.jpeg|.gif|.bmp",$file_name2)) watermark($file_name2,"","images/water.png");


// 글의 갯수를 다시 갱신
        $total=mysql_fetch_array(mysql_query("select count(*) from $t_board"."_$id "));
==========================================================================

*********************************************************************
저는 윗부분은 해당 스킨 write_ok.php 파일에서 다음과 같이 수정했구요...

<?
if (preg_match("/\\\\/", realpath(__FILE__)))
{
 $_zb_path = preg_replace("/^\w+:/", '', realpath('../../lib.php'));
 $_zb_path = preg_replace("/\\\\/", "/", $_zb_path);
 $_zb_path = preg_replace("/lib\.php/", '', $_zb_path);
}
else
{
 $_zb_path = realpath('../../lib.php');
 $_zb_path = preg_replace("/lib\.php/", '', $_zb_path);
}
 include $_zb_path."_head.php";
 include $_zb_path."water.php"; //워터마킹

$referers = explode('/', preg_replace("/http:\/\//", '', $_SERVER['HTTP_REFERER']));
...........

아래 추가부분은 동일 하구요
*********************************************************************

업로드 하라는 파일이 두개인데 제로보드 폴더에 올리라고 되어 있구요.

water.php 파일 내용

<?
function watermark($file, $save_filename, $water_file)
{
 $url=getenv("DOCUMENT_ROOT")."/bbs/"; //자신의 제로보드 절대경로를 써줍니다
 $file=$url.$file;

 $img_info = getImageSize($file);
 if($img_info[2] == 1)   $src_img = ImageCreateFromGif($file); //gif파일일경우
 elseif($img_info[2] == 2)   $src_img = ImageCreateFromJPEG($file);//jpg파일일경우
 elseif($img_info[2] == 3)   $src_img = ImageCreateFromPNG($file);//png파일일경우
 elseif($img_info[2] == 6) {
  exec( "bmptoppm $file > $file.ppm");
  exec( "cjpeg -quality 100 $file.ppm > $file.jpg");
  $src_img = ImageCreateFromJPEG($file.".jpg");
 }
 else    return 0;

 $img_width = $img_info[0];
    $img_height = $img_info[1];

 $dst_img = $src_img;

 $water = ImageCreateFromPNG($water_file);
 $water_x = imageSX($water);
 $water_y = imageSY($water);
 
 $trans = Imagecolorat($water, 0, 0);
 $offset_X = $img_width - $water_x - 3;
 $offset_Y = $img_height - $water_y - 3;

 for ( $i = 0; $i < $water_x; $i++ )
  for ( $j = 0; $j < $water_y; $j++ )
   if ( $trans != Imagecolorat($water, $i, $j) ) {
    $rgb = imagecolorsforindex($dst_img, Imagecolorat($dst_img, $i + $offset_X, $j + $offset_Y));
 
    if ( $rgb["red"]   > 177)  $rgb["red"] = $rgb["red"] - 50;
    else                          $rgb["red"] = $rgb["red"] + 50;
    if ( $rgb["green"] > 177)  $rgb["green"] = $rgb["green"] - 50;
    else                          $rgb["green"] = $rgb["green"] + 50;
    if ( $rgb["blue"]  > 177)  $rgb["blue"] = $rgb["blue"] - 50;
    else                          $rgb["blue"] = $rgb["blue"] + 50;
    $wt_img = Imagecolorresolve($dst_img, $rgb["red"], $rgb["green"], $rgb["blue"]);
    imagesetpixel($dst_img, $i+$offset_X, $j+$offset_Y, $wt_img);
   }

    if($img_info[2] == 1) {
        ImageInterlace($dst_img);
        ImageJPEG($dst_img, $file.$save_filename);//gif라이팅안되므로수정
    }elseif($img_info[2] == 2){
        ImageInterlace($dst_img);
        ImageJPEG($dst_img, $file.$save_filename);
    }elseif($img_info[2] == 3){
        ImagePNG($dst_img, $file.$save_filename);
    }elseif($img_info[2] == 6){
        ImageInterlace($dst_img);
        ImageJPEG($dst_img, $file.$save_filename);
        unlink( "$file.ppm" );
        unlink( "$file.jpg" );
    }
    ImageDestroy($dst_img);
}
?>


watergif.php 파일 내용

<?
function watermark($file, $save_filename, $water_file)
{
 $url=getenv("DOCUMENT_ROOT")."/bbs/"; //자신의 제로보드 절대경로를 써줍니다
 $file=$url.$file;

 $img_info = getImageSize($file);
 if($img_info[2] == 1)   $src_img = ImageCreateFromGif($file); //gif파일일경우
 elseif($img_info[2] == 2)   $src_img = ImageCreateFromJPEG($file); //jpg파일일경우
 elseif($img_info[2] == 3)   $src_img = ImageCreateFromPNG($file); //png파일일경우
 elseif($img_info[2] == 6) $src_img = ImageCreateFromWBMP($file); //bmp파일일경우
 else    return 0;

 $img_width = $img_info[0];
    $img_height = $img_info[1];

 $dst_img = $src_img;

 $water = ImageCreateFromPNG($water_file);
 $water_x = imageSX($water);
 $water_y = imageSY($water);
 
 $trans = Imagecolorat($water, 0, 0);
 $offset_X = $img_width - $water_x - 3;
 $offset_Y = $img_height - $water_y - 3;

 for ( $i = 0; $i < $water_x; $i++ )
  for ( $j = 0; $j < $water_y; $j++ )
   if ( $trans != Imagecolorat($water, $i, $j) ) {
    $rgb = imagecolorsforindex($dst_img, Imagecolorat($dst_img, $i + $offset_X, $j + $offset_Y));
 
    if ( $rgb["red"]   > 177)  $rgb["red"] = $rgb["red"] - 50;
    else                          $rgb["red"] = $rgb["red"] + 50;
    if ( $rgb["green"] > 177)  $rgb["green"] = $rgb["green"] - 50;
    else                          $rgb["green"] = $rgb["green"] + 50;
    if ( $rgb["blue"]  > 177)  $rgb["blue"] = $rgb["blue"] - 50;
    else                          $rgb["blue"] = $rgb["blue"] + 50;
    $wt_img = Imagecolorresolve($dst_img, $rgb["red"], $rgb["green"], $rgb["blue"]);
    imagesetpixel($dst_img, $i+$offset_X, $j+$offset_Y, $wt_img);
   }

    if($img_info[2] == 1) {
        ImageInterlace($dst_img);
        ImageGIF($dst_img, $file.$save_filename);
    }elseif($img_info[2] == 2){
        ImageInterlace($dst_img);
        ImageJPEG($dst_img, $file.$save_filename);
    }elseif($img_info[2] == 3){
        ImagePNG($dst_img, $file.$save_filename);
    }elseif($img_info[2] == 6){
        ImageInterlace($dst_img);
        ImageWBMP($dst_img, $file.$save_filename);
    }
    ImageDestroy($dst_img);
}
?>


이상의 내용은 없습니다. (사용할 문구 이미지 올리는거 빼곤)

EXIF 정보 그대로 살려둘 순 없을까요 ???

댓글목록

등록된 댓글이 없습니다.

PHP
871 (8/18P)

Search

Copyright © Cmd 명령어 3.145.57.5