>  기사  >  백엔드 개발  >  PHP 이미지 워터마킹 및 업로드된 이미지 워터마킹

PHP 이미지 워터마킹 및 업로드된 이미지 워터마킹

WBOY
WBOY원래의
2016-07-25 09:07:401195검색
  1. //파일 형식 목록 업로드
  2. $uptypes=array(
  3. 'image/jpg',
  4. 'image /jpeg',
  5. '이미지/png',
  6. '이미지/pjpeg',
  7. '이미지/gif',
  8. '이미지/bmp',
  9. '이미지/x-png'
  10. );
  11. $max_file_size=2000000; //업로드 파일 크기 제한, 단위 BYTE
  12. $destination_folder="uploadimg/"; //업로드 파일 경로
  13. $watermark=1; 워터마크 추가(1은 워터마크, 나머지는 워터마크 없음);
  14. $watertype=1; //워터마크 유형(1은 텍스트, 2는 그림)
  15. $waterposition=1; 왼쪽 모서리, 2는 오른쪽 하단 모서리
  16. , 3은 왼쪽 상단 모서리, 4는 오른쪽 상단 모서리, 5는 가운데);
  17. $waterstring="
  18. http://www.xplore.cn/"; //워터마크 문자열
  19. $waterimg="xplore.gif" //워터마크 이미지
  20. $imgpreview=1 ; //미리보기 이미지 생성 여부(1은 생성됨, 나머지는 생성되지 않음);
  21. $imgpreviewsize=1/2; //썸네일 비율
  22. ?>
  23. < ;head>
  24. ZwelL 이미지 업로더
  25. 메서드 ="post" name= "upform">
  26. 파일 업로드:
  27. 업로드가 허용되는 파일 형식은 다음과 같습니다:
  28. if ($_SERVER[ 'REQUEST_METHOD'] == 'POST')
  29. {
  30. if (!is_uploaded_file($_FILES["upfile"]
  31. [tmp_name]))
  32. // 파일 존재 여부
  33. {
  34. echo "사진이 존재하지 않습니다!";
  35. exit;
  36. }
  37. $file = $_FILES["upfile"];
  38. if($max_file_size <$file["size"])
  39. //파일 크기 확인
  40. {
  41. echo "파일이 너무 큽니다!";
  42. exit;
  43. }
  44. if( !in_array($file["type"], $uptypes ))
  45. //파일 형식 확인
  46. {
  47. echo "파일 형식이 일치하지 않습니다!".$file["type"];
  48. exit;
  49. }
  50. if(!file_exists( $destination_folder))
  51. {
  52. mkdir($destination_folder);
  53. }
  54. $filename=$file["tmp_name"];
  55. $image_size = getimagesize($filename);
  56. $pinfo=pathinfo($file["name"]);
  57. $ftype=$pinfo['extension'];
  58. $destination = $ Destination_folder.
  59. time().".".$ftype ;
  60. if (file_exists($destination) &&
  61. $overwrite != true)
  62. {
  63. echo "동일한 파일 이름이 이미 존재합니다.";
  64. exit;
  65. }
  66. if (!move_uploaded_file ($filename,
  67. $destination))
  68. {
  69. echo "파일 이동 오류";
  70. exit ;
  71. }
  72. $pinfo=pathinfo($destination);
  73. $fname=$pinfo[basename];
  74. echo " 가 성공적으로 업로드되었습니다
  75. < /font>
    파일 이름:
  76. $fname."
    ";
  77. echo " 너비: ".$image_size[0];
  78. echo " 길이:".$image_size [1];
  79. echo "
    크기:".$file["size"]." >if($watermark==1)
  80. {
  81. $iinfo= getimagesize($destination,$iinfo);
  82. $nimage=imagecreatetruecolor($image_size[0]
  83. ,$image_size[1] );
  84. $white=imagecolorallocate($nimage,255,255,255);
  85. $black=imagecolorallocate($nimage,0,0,0);
  86. $red=imagecolorallocate($nimage,255,0,0 );
  87. imagefill($nimage,0,0,$white);
  88. 스위치($iinfo[2])
  89. {
  90. 사례 1:
  91. $simage =imagecreatefromgif($destination) ;
  92. 중단;
  93. 사례 2:
  94. $simage =imagecreatefromjpeg($destination);
  95. 중단;
  96. 사례 3:
  97. $simage =imagecreatefrompng($destination);
  98. break;
  99. 사례 6:
  100. $simage =imagecreatefromwbmp($destination) ;
  101. break;
  102. default:
  103. die("지원되지 않는 파일 형식");
  104. exit;
  105. }
  106. imagecopy($nimage,$simage,0,0,0 ,0,
  107. $image_size[0],$image_size[1]);
  108. imagefilled직사각형($nimage,1,
  109. $ image_size[1]-15,80,$image_size[1],$white );
  110. switch($watertype)
  111. {
  112. 사례 1: //워터마크 문자열 추가
  113. imagestring($nimage, 2,3,$image_size[1]-15,
  114. $ waterstring,$black);
  115. break;
  116. 사례 2: //워터마크 이미지
  117. $simage1 =imagecreatefromgif("xplore.gif" );
  118. imagecopy($nimage,$simage1,0, 0,0,0,85,15);
  119. imagedestroy($simage1);
  120. break;
  121. }
  122. 스위치($ iinfo[2])
  123. {
  124. 사례 1:
  125. //imagegif($nimage, $destination);
  126. imagejpeg($nimage, $destination);
  127. break;
  128. 사례 2:
  129. imagejpeg($nimage, $destination);
  130. break;
  131. 사례 3:
  132. imagepng($nimage, $destination);
  133. break;
  134. 사례 6:
  135. imagewbmp($nimage, $destination);
  136. // imagejpeg($nimage, $destination);
  137. break;
  138. }
  139. //업로드된 원본 파일 덮어쓰기
  140. imagedestroy($nimage );
  141. imagedestroy($simage);
  142. }
  143. if($imgpreview==1)
  144. {
  145. echo "
    이미지 미리보기:
    ";
  146. echo "height=".($image_size[1]*$imgpreviewsize);"
  147. echo " alt="이미지 미리보기:r파일 이름:". 🎜>$destination."r업로드 시간:" />";
  148. }
  149. }
  150. ?>
코드 복사


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.