>  기사  >  백엔드 개발  >  PHP 이미지 워터마크를 추가, 압축 및 자르기 위한 캡슐화 클래스

PHP 이미지 워터마크를 추가, 압축 및 자르기 위한 캡슐화 클래스

韦小宝
韦小宝원래의
2017-12-05 08:56:431538검색

  php는 주로 GD 라이브러리 확장을 사용하여 images 파일을 작동합니다. 이미지를 조작하기 위해 php를 자주 사용하면 자연스럽게 많은 함수를 캡슐화하게 됩니다. 그렇지 않으면 너무 많은 반복 코드를 작성하게 됩니다. 그림과 관련된 함수가 많을 때 이러한 php 함수를 분류하는 것을 고려할 수 있으므로 이를 클래스로 캡슐화하는 아이디어가 있습니다. 그럼 아래에서 어떻게 포장되어 있는지 살펴보겠습니다!

 사진 작업에는 네 가지 주요 단계가 있습니다.

  1. 사진 열기

  2. 사진 조작

  3. 사진 출력

  4. 사진을 파괴하세요

 1,3,4. 3단계는 매번 작성해야 하는데, 매번 거의 동일합니다. 실제로 변경해야 할 유일한 단계는 이미지 조작 단계입니다. 그림 조작은 종종 하나 이상의 주요 GD 기능을 통해 수행됩니다.

이 글은 텍스트 워터마크(imagettftext()), 이미지 워터마크(imagecopymerge()), 이미지 압축, 이미지 자르기(imagecopyresampled())라는 네 가지 메소드를 클래스에 요약합니다. 자세히 설명되어 있습니다. 코드 바로가기:


<?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['2'],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['0'], $col['1'], $col['2'],$col['3']);

        imagettftext($this->image, $size, $angle, $location['0'], $location['1'], $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['2'],false);
        $func2="imagecreatefrom".$type;
        $water=$func2($imageMark);

        imagecopymerge($this->image, $water, $dst[0], $dst[1], 0, 0, $info2['0'], $info2['1'], $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['0'], $this->info['1']);
        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['mime']);

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

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

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

         $funn($this->image,$newname.'.'.$this->type);
     }     public function destruct(){
         imagedestroy($this->image);
     }

 } ?>


위 내용은 이 글의 전부입니다. 다른 작업이 필요하시면 이 클래스에 추가하시면 됩니다~~

관련 추천:

PHP에서 GD 라이브러리를 사용하여 인증 코드 효과 튜토리얼을 완료하는 방법에 대한 자세한 설명

PHP에서 GD 라이브러리를 여는 방법은 무엇입니까?

php는 GD 라이브러리를 사용하여 고품질 썸네일 이미지 샘플 코드를 생성합니다

위 내용은 PHP 이미지 워터마크를 추가, 압축 및 자르기 위한 캡슐화 클래스의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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