>백엔드 개발 >PHP 튜토리얼 >PHP 이미지 파일 작업 캡슐화 클래스

PHP 이미지 파일 작업 캡슐화 클래스

墨辰丷
墨辰丷원래의
2018-06-07 13:49:291551검색

이 글은 주로 PHP 이미지 파일 연산 캡슐화 클래스를 소개합니다. 관심있는 친구들이 참고하시면 좋을 것 같습니다.

PHP는 주로 GD 라이브러리 확장을 사용하여 이미지 파일을 작동합니다. 이미지를 조작하기 위해 PHP를 자주 사용하면 자연스럽게 많은 기능을 캡슐화하게 되고, 그렇지 않으면 너무 많은 반복 코드를 작성하게 됩니다. 그림과 관련된 함수가 많을 경우 이러한 함수를 정리하는 것을 고려할 수 있으므로 이를 클래스로 캡슐화하는 아이디어를 가지고 있습니다.
작업 사진은 주로 4단계를 거칩니다.
1. 사진 열기
2. 사진 조작
3. 사진 출력
4. 1, 3, 4단계는 반드시 작성해야 합니다. 시간, 매번 거의 동일합니다. 실제로 변경해야 할 유일한 것은 이미지를 조작하는 단계입니다. 그림 조작은 종종 하나 이상의 주요 GD 기능을 통해 수행됩니다.

<?php 

class Image
{  
  private $info;

  private $image;
  public $type;
  public function __construct($src)
  {

    $this->info=getimagesize($src);
    $this->type=image_type_to_extension($this->info[&#39;2&#39;],false);
    $fun="imagecreatefrom{$this->type}";
    $this->image=$fun($src);
  }
  /**
   * 文字水印
   * @param [type] $font   字体
   * @param [type] $content 内容
   * @param [type] $size   文字大小
   * @param [type] $col   文字颜色(四元数组)
   * @param array  $location 位置 
   * @param integer $angle  倾斜角度
   * @return [type]      
   */
  public function fontMark($font,$content,$size,$col,$location,$angle=0){
    $col=imagecolorallocatealpha($this->image, $col[&#39;0&#39;], $col[&#39;1&#39;], $col[&#39;2&#39;],$col[&#39;3&#39;]);

    imagettftext($this->image, $size, $angle, $location[&#39;0&#39;], $location[&#39;1&#39;], $col,$font,$content);
  }
  
  /**
   * 图片水印
   * @param [type] $imageMark 水印图片地址
   * @param [type] $dst    水印图片在原图片中的位置
   * @param [type] $pct    透明度
   * @return [type]      
   */
  public function imageMark($imageMark,$dst,$pct){
    $info2=getimagesize($imageMark);
    $type=image_type_to_extension($info2[&#39;2&#39;],false);
    $func2="imagecreatefrom".$type;
    $water=$func2($imageMark);

    imagecopymerge($this->image, $water, $dst[0], $dst[1], 0, 0, $info2[&#39;0&#39;], $info2[&#39;1&#39;], $pct);
    imagedestroy($water);

  }
  /**
   * 压缩图片
   * @param [type] $thumbSize 压缩图片大小
   * @return [type]      [description]
   */
  public function thumb($thumbSize){
    $imageThumb=imagecreatetruecolor($thumbSize[0], $thumbSize[1]);
    
    imagecopyresampled($imageThumb, $this->image, 0, 0, 0, 0, $thumbSize[0], $thumbSize[1], $this->info[&#39;0&#39;], $this->info[&#39;1&#39;]);
    imagedestroy($this->image);
    $this->image=$imageThumb;
  }
  /**
  * 裁剪图片
   * @param [type] $cutSize 裁剪大小
   * @param [type] $location 裁剪位置
   * @return [type]      [description]
   */
   public function cut($cutSize,$location){
     $imageCut=imagecreatetruecolor($cutSize[0],$cutSize[1]);

     imagecopyresampled($imageCut, $this->image, 0, 0, $location[0], $location[1],$cutSize[0],$cutSize[1],$cutSize[0],$cutSize[1]);
     imagedestroy($this->image);
     $this->image=$imageCut;
   }
  /**
   * 展现图片
   * @return [type] [description]
   */
  public function show(){
    header("content-type:".$this->info[&#39;mime&#39;]);

    $funn="image".$this->type;

    $funn($this->image);
  }
  /**
   * 保存图片
 * @param [type] $newname 新图片名
 * @return [type]     [description]
 */
   public function save($newname){
     header("content-type:".$this->info[&#39;mime&#39;]);

     $funn="image".$this->type;

     $funn($this->image,$newname.&#39;.&#39;.$this->type);
   }
   public function __destruct(){
     imagedestroy($this->image);
   }

 }

 ?>

요약: 위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다.

관련 권장사항:

php는 중국어 파일 다운로드를 지원합니다

PHP에서 Mongodb를 원격 데이터베이스에 연결하는 자세한 설명과 사례

PHP 텍스트를 이미지로 변환하는 기능의 원리

위 내용은 PHP 이미지 파일 작업 캡슐화 클래스의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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