>  기사  >  백엔드 개발  >  파일을 업로드하고 텍스트 및 이미지 워터마크를 추가하는 PHP 코드

파일을 업로드하고 텍스트 및 이미지 워터마크를 추가하는 PHP 코드

WBOY
WBOY원래의
2016-07-25 09:10:221168검색
  1. /*************************************

  2. 매개변수 설명:
  3. $max_file_size: 업로드 파일 크기 제한, 단위 BYTE
  4. $destination_folder: 업로드 파일 경로
  5. $watermark: 워터마크 첨부 여부(1은 워터마크 추가, 나머지는 워터마크 추가 없음);

  6. 지침 사용하려면:

  7. 1. GD 라이브러리를 사용해야 하므로 PHP.INI 파일에서 "extension=php_gd2.dll" 줄 앞에 있는 ; 기호를 제거하세요.
  8. 2. 귀하의 php_gd2.dll은 디렉토리에 있습니다;
  9. *******************/

  10. / /파일 형식 목록 업로드

  11. $uptypes=array(
  12. 'image/jpg',
  13. 'image/jpeg',
  14. 'image/png',
  15. 'image/pjpeg',
  16. '이미지/gif',
  17. '이미지/bmp',
  18. '이미지/x-png'
  19. );

  20. $max_file_size=2000000; /약 2M, 업로드 파일 크기 제한, 단위 BYTE

  21. $destination_folder="uploadimg/"; //업로드 파일 경로
  22. $watermark=1; //워터마크 추가 여부(1은 워터마크 추가를 의미하고 나머지는 추가) 추가하지 마세요);
  23. $watertype=1; //워터마크 유형(1은 텍스트, 2는 그림)
  24. $waterposition=1; //워터마크 위치(1은 왼쪽 하단, 2는 오른쪽 하단, 3은 왼쪽 상단, 4는 오른쪽 상단, 5는 중앙);
  25. $waterstring="JYS studio"; //Watermark string
  26. $waterimg="xplore. gif";//워터마크 이미지
  27. $imgpreview= 1; //미리보기 이미지 생성 여부(1은 생성, 다른 이미지는 생성하지 않음);
  28. $imgpreviewsize=1/2; //썸네일 비율
  29. ?>
  30. ZwellL 이미지 업로더
  31. 파일 업로드:

  32. 업로드가 허용되는 파일 형식은 다음과 같습니다: --uptypes 배열의 요소를 연결합니다. ','를 사용하여 문자열을 구성하고 반환합니다.->
  33. if ($_SERVER['REQUEST_METHOD'] == 'POST')
  34. {
  35. //파일이 존재하나요?
  36. if (!is_uploaded_file ($_FILES["upfile"][tmp_name]))
  37. {
  38. echo "사진이 존재하지 않습니다!";
  39. 종료;
  40. }
  41. $file = $_FILES["upfile"] ;
  42. //파일 크기 확인

  43. if($max_file_size < $file[ "size"])

  44. {
  45. echo "파일이 너무 큽니다! 2M를 초과할 수 없습니다! ";
  46. 종료;
  47. }

  48. //파일 형식 확인

  49. if(!in_array($file["type"], $uptypes))
  50. {
  51. echo "파일 형식이 일치하지 않습니다!".$file["type"];
  52. exit;
  53. }

  54. 일치하지 않습니다. 존재하는 경우 자동으로 생성됩니다.

  55. if(!file_exists($destination_folder))
  56. {
  57. mkdir($destination_folder);
  58. }

  59. < ;p> $filename=$file ["tmp_name"]; //시스템에서 자동 생성한 임시 파일 이름
  60. $filenamecustom = $file["name"] //사용자가 업로드한 파일 이름
  61. $image_size = getimagesize($filename); //이미지 크기
  62. $pinfo=pathinfo($file["name"]) //업로드된 파일의 경로 정보
  63. $ftype=$pinfo['extension ']; //업로드된 파일의 확장자
  64. //$destination = $destination_folder.time().".".$ftype;//업로드된 파일의 디렉터리 파일명 파일 형식, 파일명이 생성됩니다. by time()
  65. $destination = $destination_folder.$filenamecustom." .".$ftype;//업로드된 파일의 디렉터리 사용자 파일 이름 파일 형식

  66. 같은 이름의 파일이 존재합니다

  67. if (file_exists($destination) && $overwrite ! = true)
  68. {
  69. echo "같은 이름의 파일이 이미 존재합니다.";
  70. exit;
  71. }

  72. //지정된 디렉터리로 파일을 이동합니다

  73. if(!move_uploaded_file ($filename, $destination))
  74. {
  75. echo "파일 이동 오류" ;
  76. exit;
  77. }

  78. $pinfo= pathinfo($destination); //서버에 업로드된 파일의 경로 정보

  79. $fname=$ pinfo[basename]; //서버에 업로드된 파일 이름
  80. // echo " 성공적으로 업로드되었습니다!
    파일 이름: ".$destination_folder.$fname."
    ";

  81. 성공적으로 업로드되었습니다!
    파일 이름: ".$destination."
    ";
  82. echo " !
    파일 이름: ".$destination_folder.$filenamecustom."
    ";
  83. echo " 너비: ".$image_size [0];
  84. echo " length:".$image_size[1];
  85. echo "
    size:".$file["size"]." bytes";
  86. if($ watermark==1)
  87. {
  88. $iinfo=getimagesize($destination,$iinfo); //이미지 크기 및 유형 가져오기
  89. $nimage=imagecreatetruecolor($image_size[0],$image_size[1] ); //새로운 트루 컬러 이미지를 생성하고 이미지 식별자를 반환합니다.
  90. //x_size 및 y_size 크기의 검정색 이미지를 나타냅니다.
  91. $white=imagecolorallocate($nimage,255,255,255) // nimage는 색상을 할당합니다. 🎜> $black=imagecolorallocate($nimage,0,0,0);
  92. $red=imagecolorallocate($nimage,255,0,0);
  93. imagefill($nimage,0,0 ,$white) ; //컬러 color를 사용하여 nimage 이미지의 x, y 좌표에 영역 채우기를 수행합니다. (이미지의 왼쪽 상단은 0, 0입니다.)
  94. // (즉, 동일한 색상을 가지며 인접한 지점) x, y 지점)이 채워집니다)
  95. /*
  96. 1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF, 5 = PSD, 6 = BMP, 7 = TIFF(intel 바이트 순서) ), 8 = TIFF(모토로라 바이트 순서),
  97. 9 = JPC, 10 = JP2, 11 = JPX, 12 = JB2, 13 = SWC, 14 = IFF, 15 = WBMP, 16 = XBM
  98. */
  99. switch ($ iinfo[2])
  100. {
  101. 사례 1:
  102. $simage =imagecreatefromgif($destination) //주어진 파일명에서 얻은 이미지
  103. break;
  104. 사례 2:
  105. $simage =imagecreatefromjpeg($destination);
  106. 중단;
  107. 사례 3:
  108. $simage =imagecreatefrompng($destination);
  109. 중단;
  110. 사례 6:
  111. $simage =imagecreatefromwbmp($destination);
  112. break;
  113. default:
  114. die("지원되지 않는 파일 형식") //exit()와 동일
  115. exit;
  116. }
  117. imagecopy($nimage,$simage,0,0,0,0,$image_size[0],$image_size[1]);//0,0에서 이미지 시작, $image_size[0] 너비, $image_size [1 ]High
  118. //nimage

  119. imagefilledlectangle($nimage,1,$image_size[1]-15, 80, $image_size[1],$white);//nimage 이미지에서 흰색을 사용하여 왼쪽 위 모서리 좌표 1, $image_size[1]-15

  120. //오른쪽 아래 모서리 좌표를 그립니다. 80, $image_size[1] 직사각형
  121. 스위치($watertype)
  122. {
  123. 사례 1: //워터마크 문자열 추가
  124. imagestring($nimage,2,3,$image_size[1]- 15,$waterstring,$ black);//검정색을 사용하여 nimage의 3, $image_size[1]-15 좌표에 워터스트링을 그리고 글꼴은 내장 글꼴입니다 2
  125. break;
  126. 사례 2 : //워터마크 이미지 추가
  127. $ simage1 =imagecreatefromgif("xplore.gif");
  128. imagecopy($nimage,$simage1,0,0,0,0,85,15);
  129. imagedestroy( $simage1); //simagel 메모리와의 연결 해제
  130. break;
  131. }
  132. 스위치($iinfo[2])
  133. {
  134. 사례 1:
  135. //imagegif($ nimage, $destination);
  136. imagejpeg($nimage, $destination); //nimage 이미지에서 대상을 파일 이름으로 사용하여 JPEG 이미지를 생성합니다. nimage 매개변수는 imagecreatetruecolor() 함수의 반환 값입니다.
  137. break;

  138. 사례 2:

  139. imagejpeg($nimage, $destination);
  140. break;

  141. 3:

  142. imagepng($nimage, $destination);
  143. break;

  144. 사례 6:

  145. imagewbmp($nimage, $destination);
  146. / /imagejpeg($nimage, $destination);
  147. break;
  148. }
  149. //메모리 해제
  150. imagedestroy($nimage);
  151. imagedestroy($simage);
  152. }
  153. if($imgpreview==1)
  154. {
  155. echo "
    이미지 미리보기:
    ";
  156. echo "이미지 미리보기:r파일 이름:";
  157. }
  158. }
  159. ?>
코드 복사



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