php图片水印添加,压缩,剪切的封装类
php对图片文件的操作主要是利用GD库扩展。当我们频繁利用php对图片进行操作时,会自然封装很多函数,否则会写太多重复的代码。当有很多对图片的相关函数的时候,我们可以考虑将这些函数也整理一下,因而就有了封装成类的想法。
操作图片主要历经四个步骤:
- 打开图片
- 操作图片
- 输出图片
- 销毁图片
1,3,4三个步骤每次都要写,每次又都差不多。真正需要变通的只有操作图片的这一步骤了。操作图片又往往通过1或多个主要的GD函数来完成。
本文封装类里面的四种方法,文字水印(imagettftext()),图片水印(imagecopymerge()),图片压缩,图片剪切(imagecopyresampled()),其余的常用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['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); } } ?>
如果还需要其他操作,只需要再往这个类里面添加就好啦~~

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

Windows 11에서 메모리 압축을 사용하면 제한된 양의 RAM이 있어도 장치가 질식합니다. 이 기사에서는 Windows 11에서 메모리 압축을 활성화하거나 비활성화하는 방법을 보여줍니다. 메모리 압축이란 무엇입니까? 메모리 압축은 데이터를 RAM에 쓰기 전에 압축하여 더 많은 저장 공간을 제공하는 기능입니다. 물론 물리적 메모리에 더 많은 데이터를 저장할수록 시스템 작동 속도가 빨라지고 전반적인 성능이 향상됩니다. 이 기능은 Windows 11에서 기본적으로 활성화되어 있지만 활성화되지 않은 경우 비활성화하거나 다시 활성화할 수 있습니다. Windows 11에서 메모리 압축을 활성화하는 방법은 무엇입니까? 검색창을 클릭하고 powershell을 입력한 후

특정 다운로드 사이트에서 다운로드한 압축 패키지는 압축을 푼 후 원본 압축 패키지보다 용량이 더 커지는 것을 확인했습니다. 그 차이는 수십 Kb, 수십 Mb 정도입니다. 클라우드 디스크나 유료 공간에 업로드해도 상관없습니다. 파일이 작을 경우, 파일이 많을 경우 저장 비용이 크게 증가합니다. 나는 그것에 대해 약간의 조사를 했으며 필요하다면 배울 수 있습니다. 압축 수준: 9급 압축 사전 크기: 256 또는 384, 사전을 많이 압축할수록 속도가 느려집니다. 256MB 이전에는 압축률 차이가 더 크고, 384MB 이후에는 압축률 차이가 없습니다. 단어 크기: 최대 273 매개변수: f=BCJ2, 테스트 및 추가 매개변수 압축률이 높아집니다.

Nginx를 사용하여 HTTP 요청을 압축 및 압축 해제하는 방법 Nginx는 강력하고 유연한 고성능 웹 서버이자 역방향 프록시 서버입니다. HTTP 요청을 처리할 때 Nginx에서 제공하는 gzip 및 gunzip 모듈을 사용하여 요청을 압축 및 압축 해제하여 데이터 전송량을 줄이고 요청 응답 속도를 향상시킬 수 있습니다. 이 기사에서는 Nginx를 사용하여 HTTP 요청을 압축 및 압축 해제하는 방법의 구체적인 단계를 소개하고 해당 코드 예제를 제공합니다. gzip 모듈 구성

지원되지 않는 압축 유형의 PR 파일에 대한 이유 및 해결 방법: 1. 간소화된 PR 버전은 많은 비디오 인코더를 간소화했습니다. Premiere의 정식 버전을 다시 설치하고 사용하세요. 2. 불규칙한 비디오 인코딩으로 인해 형식 팩토리를 사용하여 변환할 수 있습니다. 비디오를 WMV 형식으로 변환합니다.

표시 방법: 1. Vim 편집기, "vim 압축 파일" 구문을 사용합니다. 2. "tar -tf 압축 파일" 명령을 사용합니다. 3. "rar v 압축 파일" 명령을 사용합니다. 5. "zip -sf 압축 파일" 명령을 사용합니다. 6. "unzip -l 압축 파일" 명령을 사용합니다. 8. "zcat 압축 파일" 명령을 사용합니다. "zless "압축 파일"을 사용하세요. 10. 적게 사용하세요.

많은 친구들이 업무를 위해 화면을 녹화하거나 파일을 전송해야 하는데 때로는 파일이 너무 커서 문제가 많이 발생하는 경우가 있습니다. 다음은 너무 큰 파일의 문제에 대한 해결 방법을 살펴보겠습니다. win10 화면 녹화 파일이 너무 큰 경우 수행할 작업: 1. 소프트웨어 Format Factory를 다운로드하여 파일을 압축합니다. 다운로드 주소 >> 2. 메인 페이지에 들어가서 "Video-MP4" 옵션을 클릭하세요. 3. 변환 형식 페이지에서 "파일 추가"를 클릭하고 압축할 MP4 파일을 선택하세요. 4. 페이지에서 "출력 구성"을 클릭하여 출력 품질에 따라 파일을 압축합니다. 5. 드롭다운 구성 목록에서 "낮은 품질 및 크기"를 선택하고 "확인"을 클릭합니다. 6. "확인"을 클릭하면 비디오 파일 가져오기가 완료됩니다. 7. "시작"을 클릭하여 변환을 시작하세요. 8. 완료 후 다음을 수행할 수 있습니다.

Golang의 이미지 품질 압축 방법 인터넷의 급속한 발전으로 이미지는 사람들이 온라인에서 정보를 전달하고 전달하는 중요한 미디어 중 하나가 되었습니다. 그러나 고해상도 이미지는 저장 공간을 많이 차지할 뿐만 아니라 네트워크 전송 중 로딩 시간도 늘어나 사용자 경험에 일정한 영향을 미칩니다. 따라서 실제 응용 분야에서 이미지 압축은 매우 의미 있는 작업입니다. 이 기사에서는 Golang을 사용하여 이미지 품질을 압축하는 방법을 소개합니다. 먼저 Gola를 가져와야 합니다.

Linux 서버의 너무 큰 로그 파일에 대한 일반적인 문제 및 해당 솔루션 인터넷의 급속한 발전과 서버의 광범위한 사용으로 인해 서버 로그 파일이 점점 더 커지는 것이 일반적인 문제가 되었습니다. 대용량 로그 데이터는 디스크 공간을 차지할 뿐만 아니라 서버의 성능 및 운영 안정성에도 영향을 미칠 수 있습니다. 이 문서에서는 Linux 서버에서 너무 큰 로그 파일로 인해 발생하는 일반적인 문제에 대해 설명하고 몇 가지 해결 방법을 제공합니다. 1. Linux 서버의 공통 로그 파일에는 시스템 로그, 애플리케이션 로그,
