>백엔드 개발 >PHP 튜토리얼 >편집자 사진 워터마크

편집자 사진 워터마크

WBOY
WBOY원래의
2016-07-25 08:49:331300검색
  1. /*PHP 이미지와 텍스트 워터마크 라이브러리
  2. 이 클래스 라이브러리는 현재 텍스트 워터마크, 위치만 지원합니다. 오른쪽 하단, 색상은 랜덤입니다
  3. 호출 방법:
  4. 1. 워터마크를 적용해야 하는 파일 상단에 클래스 라이브러리를 소개합니다:
  5. include_once 'imageClass.php'
  6. 2. 새 클래스 선언:
  7. $tpl=new image_fu;
  8. 3. 이미지 워터마크에 대한 매개변수 제공:
  9. $tpl->img (이미지 경로, 워터마크 텍스트, 글꼴 경로, 글꼴 크기, 글꼴 각도);
  10. 예:$tpl->img('abc.jpg','워터마크 텍스트입니다.','ziti.ttf',30,0)
  11. */
  12. class image_fu{
  13. private $image;
  14. private $img_info;
  15. private $img_width;
  16. private $img_height;
  17. private $img_im;
  18. 비공개 $img_text;
  19. 비공개 $img_ttf= '';
  20. 비공개 $img_new;
  21. 비공개 $img_text_size;
  22. 비공개 $img_jd;
  23. 함수 img($img= '',$txt='',$ttf ='',$size=12,$jiaodu=0){
  24. if(isset($img)&&file_exists($img)){//이미지가 존재하는지 확인하세요.
  25. $this->image =$img ;
  26. $this->img_text=$txt;
  27. $this->img_text_size=$size;
  28. $this->img_jd=$ jiaodu;
  29. if(file_exists($ttf) ){
  30. $this->img_ttf=$ttf;
  31. }else{
  32. exit('글꼴 파일: '.$ttf.'는 그렇지 않습니다. 존재합니다!');
  33. }
  34. $ this->imgyesno();
  35. }else{
  36. exit('이미지 파일:'.$img.'이 존재하지 않습니다.');
  37. }
  38. }
  39. 비공개 함수 imgyesno(){
  40. $this->img_info =getimagesize($this->image);
  41. $this->img_width =$this->img_info[0];//이미지 너비
  42. $this->img_height=$this->img_info[1];//사진 높이
  43. //사진 유형 감지
  44. 스위치($this->img_info[2] ){
  45. 사례 1:$this->img_im = imagecreatefromgif($this->image);break
  46. 사례 2:$this- >img_im = imagecreatefromjpeg($this->image); break;
  47. 사례 3:$this->img_im = imagecreatefrompng($this->image);break
  48. default:exit('Image 형식은 워터마크를 지원하지 않습니다');
  49. }
  50. $this->img_text();
  51. }
  52. 비공개 함수 img_text(){
  53. imagealphblending($this->img_im,true);
  54. //색상 설정
  55. $color=imagecolorallocate($this->img_im,255,255,255);
  56. $txt_height=$this ->img_text_size;
  57. $txt_jiaodu=$this- >img_jd;
  58. $ttf_im=imagettfbbox($txt_height,$txt_jiaodu,$this->img_ttf,$this->img_text);
  59. $w = $ttf_im[2] - $ttf_im[6] ;
  60. $h = $ttf_im[3] - $ttf_im[7]
  61. //$w = $ttf_im[7]; //$h = $ttf_im[8];
  62. unset($ttf_im);
  63. $txt_y =$this->img_height*0.5;
  64. $txt_x =$this- >img_width*0.2;
  65. //$txt_y = 0;
  66. //$txt_x =0;
  67. $this->img_new=@imagettftext($this ->img_im,$txt_height,$txt_jiaodu,$txt_x, $txt_y,$color,$this->img_ttf,$this->img_text);
  68. @unlink($this->image );//이미지 삭제
  69. switch($this- >img_info[2]) {//배경 이미지 형식 가져오기
  70. 사례 1:imagegif($this->img_im,$this-> ;image);break
  71. 사례 2:imagejpeg($this ->img_im,$this->image);break
  72. 사례 3:imagepng($this->img_im,$this-> ;image);break;
  73. default:exit('워터마크 이미지 실패');
  74. }
  75. }
  76. //이미지 표시
  77. function img_show( ){echo ''.$this->img_text.'';}
  78. //메모리 해제
  79. private function img_nothing(){
  80. unset($this->img_info)
  81. imagedestroy($this->img_im)
  82. }
  83. }
  84. ?>
코드 복사
  1. /**
  2. * 由 JetBrains PhpStorm 建立。
  3. * 使用者:taoqili
  4. * 日期:12-7-18
  5. * 時間:上午10:42
  6. */
  7. header("Content-Type: text/html; charset=utf-8");
  8. error_reporting(E_ERROR | E_WARNING);
  9. include "Uploader.class.php";
  10. //上傳圖片框中的描述表單名稱,
  11. $title = htmlspecialchars($_POST['pictitle'], ENT_QUOTES);
  12. $path = htmlspecialchars($_POST['dir'], ENT_QUOTES);
  13. //上傳設定
  14. $config = array(
  15. "savePath" //上傳設定
  16. $config = array(
  17. "savePath" = => path == "1" ? "upload/" : "upload1/"),
  18. "maxSize" => 1000, //單位KB
  19. "allowFiles" => array(".gif", ".png ", ".jpg", ".jpeg", ".bmp")
  20. );
  21. //產生上傳實例物件並完成上傳
  22. $up = new Uploader("upfile", $config);
  23. /**
  24. * 得到上傳檔案所對應的各個參數,陣列結構
  25. * array(
  26. * "originalName" => "", //原始檔案名稱
  27. * "name" => "", //新檔案名稱
  28. * "url" => "", //傳回的位址
  29. * "size" => "", //檔案大小
  30. * "type" => "" , //檔案類型
  31. * "state" => "" //上傳狀態,上傳成功時必須回傳"SUCCESS"
  32. * )
  33. */
  34. $info = $up->getFileInfo();
  35. /**
  36. * 傳回資料json資料
  37. * {
  38. * 'url' :'a.jpg', //儲存後的檔案路徑
  39. * 'title' :'hello', / /檔案描述,對圖片來說在前端會加入到title屬性上
  40. * 'original' :'b.jpg', //原始檔名
  41. * 'state' :'SUCCESS' //上傳狀態,成功時返回SUCCESS,其他任何值將原樣返回至圖片上傳框
  42. * }
  43. */
  44. /* include "imgwater.php";
  45. $tpl=new image_fu;
  46. $tpl->img($info['url'],'http://www.zgxbzh.com/', 'simsun.ttc',30,0);*/
  47. echo "{'url':'" . $info["url"] . "','title':'" . $title . "','original':'" . $info["originalName"] . "','state':'" . $info["state"] . "'}";
複製程式碼


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