>백엔드 개발 >PHP 튜토리얼 >PHP는 워터마크 및 비례 썸네일 및 고정 높이 및 고정 너비 클래스를 추가합니다.

PHP는 워터마크 및 비례 썸네일 및 고정 높이 및 고정 너비 클래스를 추가합니다.

WBOY
WBOY원래의
2016-07-25 08:47:29844검색
PHP는 워터마크 및 비례 축소판, 고정 높이 및 고정 너비 클래스를 추가합니다.
foreach 루프 처리를 사용할 경우 절전 시간을 설정하거나 처리 후 반환 값을 따라야 합니다. 그렇지 않으면 처리가 완료되지 않습니다.

다운로드: http://pan.baidu.com/s/1ntKAfFF
  1. //파일 이름: image_process.class.php
  2. class Image_process{
  3. public $source;//원본 이미지
  4. public $source_width;//Width
  5. public $source_height;//Height
  6. public $source_type_id;
  7. public $orign_name;
  8. public $orign_dirname;
  9. //이미지 경로 전달
  10. 공용 함수 __construct($source){
  11. $this->typeList = array(1=>'gif',2=>'jpg',3=>'png');
  12. $ginfo = getimagesize($source);
  13. $this->source_width = $ginfo[0];
  14. $this->source_height = $ginfo[1];
  15. $this->source_type_id= $ ginfo [2];
  16. $this->orign_url = $source;
  17. $this->orign_name = basename($source);
  18. $this->orign_dirname = dirname($source);
  19. }
  20. //판단 및 처리, PHP 인식 가능 인코딩 반환
  21. public function JudgeType($type,$source){
  22. if($type==1){
  23. return ImageCreateFromGIF($source);//gif
  24. }else if($type==2){
  25. return ImageCreateFromJPEG($source);//jpg
  26. }else if($type==3) {
  27. return ImageCreateFromPNG($source);//png
  28. }else{
  29. return false;
  30. }
  31. }
  32. //워터마크 이미지 생성
  33. 공개 함수 watermarkImage ($logo){
  34. $linfo = getimagesize($logo);
  35. $logo_width = $linfo[0];
  36. $logo_height = $linfo[1];
  37. $logo_type_id = $linfo [ 2];
  38. $sourceHandle = $this->judgeType($this->source_type_id,$this->orign_url);
  39. $logoHandle = $this->judgeType($logo_type_id,$logo ) ;
  40. if( !$sourceHandle || ! $logoHandle ){
  41. return false;
  42. }
  43. $x = $this->source_width - $logo_width;
  44. $ y = $this->source_height- $logo_height;
  45. ImageCopy($sourceHandle,$logoHandle,$x,$y,0,0,$logo_width,$logo_width) 또는 die("결합 실패" ) ;
  46. $newPic = $this->orign_dirname .'water_'.time().'.'. $this->typeList[$this->source_type_id];
  47. if( $ this->saveImage($sourceHandle,$newPic)){
  48. imagedestroy($sourceHandle);
  49. imagedestroy($logoHandle);
  50. }
  51. }
  52. // 수정 width
  53. // 높이 = 실제 고정 상단 높이
  54. // 너비 = 실제 고정 상단 너비
  55. 공개 함수 fixSizeImage($width,$height){
  56. if( $width > $this-> ; source_width) $this->source_width;
  57. if( $height > $this->source_height ) $this->source_height;
  58. if( $width === false){
  59. $ width = 바닥($this->source_width / ($this->source_height / $height));
  60. }
  61. if( $height === false){
  62. $height = 바닥($ this ->source_height / ($this->source_width / $width));
  63. }
  64. $this->tinyImage($width,$height);
  65. }
  66. / /Scale
  67. // $scale scale
  68. public function scaleImage($scale){
  69. $width = Floor($this->source_width * $scale);
  70. $height = Floor( $ this->source_height * $scale);
  71. $this->tinyImage($width,$height);
  72. }
  73. //썸네일 생성
  74. 비공개 함수tinyImage($ 너비,$높이){
  75. $tinyImage = imagecreatetruecolor($width, $height );
  76. $handle = $this->judgeType($this->source_type_id,$this->orign_url) ;
  77. if(function_exists('imagecopyresampled')){
  78. imagecopyresampled($tinyImage,$handle,0,0,0,0,$width,$height,$this->source_width,$this-> ;source_height );
  79. }else{
  80. imagecopyreized($tinyImage,$handle,0,0,0,0,$width,$height,$this->source_width,$this->source_height)
  81. }
  82. $newPic = time().'_'.$width.'_'.$height.'.'. $this->typeList[$this->source_type_id]; > $newPic = $this->orign_dirname .'thumb_'. $newPic;
  83. if( $this->saveImage($tinyImage,$newPic)){
  84. imagedestroy($tinyImage);
  85. imagedestroy($handle);
  86. }
  87. }
  88. //이미지 저장
  89. 비공개 함수 saveImage($image,$url){
  90. if(ImageJpeg($image, $ url)){
  91. true를 반환합니다.
  92. }
  93. }
  94. }
코드 복사
  1. //使용
  2. include('image_process.class.php');
  3. $m = array(
  4. 'D:myspacetestimage_process1.jpg',
  5. 'D:myspacetestimage_process2.jpg',
  6. 'D:myspacetestimage_process3.jpg',
  7. 'D:myspacetestimage_process4.jpg'
  8. );
  9. $img = 'D:myspacetestimage_process1.jpg';
  10. $logo = 'D:myspacetestimage_processlogo.png';
  11. foreach( $m as $item){
  12. $s = new Image_process( $item ) ;
  13. $s->watermarkImage($logo);
  14. $s->scaleImage(0.8);
  15. $s->fixSizeImage(200,false);
  16. 수면(1) ;
  17. }
复代码


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