php는 주로 GD 라이브러리 확장을 사용하여 images 파일을 작동합니다. 이미지를 조작하기 위해 php를 자주 사용하면 자연스럽게 많은 함수를 캡슐화하게 됩니다. 그렇지 않으면 너무 많은 반복 코드를 작성하게 됩니다. 그림과 관련된 함수가 많을 때 이러한 php 함수를 분류하는 것을 고려할 수 있으므로 이를 클래스로 캡슐화하는 아이디어가 있습니다. 그럼 아래에서 어떻게 포장되어 있는지 살펴보겠습니다!
사진 작업에는 네 가지 주요 단계가 있습니다.
사진 열기
사진 조작
사진 출력
사진을 파괴하세요
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 이미지 워터마크를 추가, 압축 및 자르기 위한 캡슐화 클래스의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!