PHP图像处理类库及演示分享_PHP
简单写了一个PHP的图像处理类库,虽然功能比较少,但是目前也没用到太高级的,以后用到了再填吧,或者哪位给点建议加上什么功能,或者有什么需求可以跟我说,我有时间加上,如果哪位对这个类库进行了扩展的话,还麻烦拿出来大家分享一下,代码现在是能用就行,考虑的东西不是很多,有什么更好的建议请告诉我,谢谢
Img.php
<?php /** * Created by PhpStorm. * User: MCtion * Date: 2015/5/14 0014 * Time: 15:36 * 简单的图像类库,本类中所有相对路径均基于网站根目录,如需修改,则修改常量__WEBROOT__即可 * 功能:指定文字内容创建图片(不支持中文)、创建验证码图片、创建缩略图、其他功能待续 * 方法: * Style(array $Options) 设置图片样式,每次设定前将重置为默认样式 * Create_Img_Png() 创建PNG图像,相关属性由Style指定 * Create_Img_Jpeg() 创建JPEG图像,相关属性由Style指定 * Create_Verify() 创建验证码图像,相关属性由Style指定 * Get_Verify() 获得创建的验证码值,MD5加密 * Load_Img(string $FilePath) 加载图像,创建图像源,供其他方法调用源,FilePath为图像相对路径 * Create_Thumb(string $FileName,string $FilePath) 创建由Load_Img()加载的图像的缩略图,FileName为保存后的图像前缀,FilePath为保存图像的相对路径,不包含文件名(例:/Uploads/images/Thumb/) */ if(!defined("__WEBROOT__")) define("__WEBROOT__",$_SERVER['DOCUMENT_ROOT']); class Img { protected $_Img; //图片源 protected $_FileImg; //加载的图片源 protected $_FileInfo; //加载的图片的信息数组 protected $_PicInfo; //加载的图片的宽高等信息数组 protected $_Rand = 'abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ1234567890'; //随机因子 protected $_Code = ''; //验证码 public $Width = 300;//图片默认宽 public $Height = 80; //图片默认高 public $BackgroundColor = "000000"; public $Font = "/phps/Public/Font/ARIALNB.TTF"; //默认字体 public $FontSize = 16; //默认字体字号 public $FontColor = "ffffff"; //默认字体颜色 public $Content = "Test Word"; public $Align = "left"; public $Codes = 4; //验证码个数 public $Line = 6; //干扰线条的个数 public $LoadErr = ''; //错误信息 //public function __construct(){} /** 设置图片属性 * @param array $Options 属性数组 * @return $this 返回对象 */ public function Style($Options){ $this -> _Re_Set(); foreach($Options as $K=>$V){ if(in_array($K,array('Width','Height','BackgroundColor','Font','FontSize','FontColor','Content','Align','Codes','Line','Snow'))){ if($K == "BackgroundColor" || $K == "FontColor"){ if(preg_match("#([a-zA-Z0-9]{6})#",$V)) $this -> $K = $V; }else{ $this -> $K = $V; } } } return $this; } /** * 重置属性,不提供外部访问 */ protected function _Re_Set(){ $this -> Width = 100; $this -> Height = 30; $this -> BackgroundColor = "000000"; $this -> Font = "/phps/Public/Font/ARIALNB.TTF"; $this -> FontSize = 16; $this -> FontColor = "ffffff"; $this -> Align = "left"; $this -> Codes =4; $this -> Line = 6; } /** * 创建图像源、添加背景、创建图像 * @param bool $BGC 指定是否创建背景色及矩形块 */ protected function _Create_Img_GB($BGC = True){ $this -> _Img = imagecreatetruecolor($this -> Width,$this -> Height); //创建背景源 if($BGC){ preg_match("#([a-zA-Z0-9]{2})([a-zA-Z0-9]{2})([a-zA-Z0-9]{2})#",$this -> BackgroundColor,$ColorArr); //将颜色值分隔成三组16位进制数 $Color = imagecolorallocate($this -> _Img,hexdec($ColorArr[1]),hexdec($ColorArr[2]),hexdec($ColorArr[3])); //给Img图像源添加背景色 imagefilledrectangle($this -> _Img,0,$this -> Height,$this -> Width,0,$Color); //创建图像 } } /** * 创建随机验证码 */ protected function _Create_Code(){ $Len = strlen($this -> _Rand) - 1; for($i = 0;$i < $this -> Codes;$i++){ $this -> _Code .= $this -> _Rand[mt_rand(0,$Len)]; } } /** * 向图像中写入字符串,暂不支持中文 */ protected function _Write_Text(){ $FontWidth = imagefontwidth($this -> FontSize); //获取字号的一个字符的宽度 preg_match_all('/(.)/us', $this -> Content, $TextArr); //将内容分隔成数组一遍统计个数 $FontHeight = imagefontheight($this -> FontSize); //获取字号的高度 $X = ceil(($this -> Width - ($FontWidth * count($TextArr[0]))) / 2); //设置X轴距左边距的距离 $Y = ceil(($this -> Height + $FontHeight) / 2); //设置Y轴距上边距的距离 preg_match("#([a-zA-Z0-9]{2})([a-zA-Z0-9]{2})([a-zA-Z0-9]{2})#",$this -> FontColor,$ColorArr); $Color = imagecolorallocate($this -> _Img,hexdec($ColorArr[1]),hexdec($ColorArr[2]),hexdec($ColorArr[3])); //设置文字颜色 imagettftext($this -> _Img,$this -> FontSize,0,$X,$Y,$Color,__WEBROOT__.$this -> Font,$this -> Content); //写入内容 } /** * 向图像中写入验证码 */ protected function _Write_Code(){ $_X = $this -> Width / $this -> Codes; //设置宽高比 for($i = 0;$i < $this -> Codes;$i++){ //循环Codes次,每次生成一位验证码值 $Color = imagecolorallocate($this -> _Img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156)); //随机生成验证码值的颜色 imagettftext($this -> _Img,$this -> FontSize,mt_rand(-30,30),$_X*$i+mt_rand(1,5),$this -> Height / 1.3,$Color,__WEBROOT__.$this -> Font,$this -> _Code[$i]); //生成一位验证码值 } } /** * 向图像中写入干扰线条 */ protected function _Write_Line() { //生成干扰线条 for ($i=0;$i < $this -> Line;$i++) { $Color = imagecolorallocate($this -> _Img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156)); imageline($this -> _Img,mt_rand(0,$this -> Width),mt_rand(0,$this -> Height),mt_rand(0,$this -> Width),mt_rand(0,$this -> Height),$Color); } } /** * 设置图像类型为JPEG */ protected function _Img_Jpeg(){ header('Content-type:image/jpeg'); imagejpeg($this -> _Img); imagedestroy($this -> _Img); } /** * 设置图像类型为PNG */ protected function _Img_Png(){ header('Content-type:image/png'); imagepng($this -> _Img); imagedestroy($this -> _Img); } /** * 创建JPEG的字符串图像 */ public function Create_Img_Jpg(){ $this -> _Create_Img_GB(True); $this -> _Write_Text(); $this -> _Img_Jpeg(); } /** * 创建PNG的字符串图像 */ public function Create_Img_Png(){ $this -> _Create_Img_GB(True); $this -> _Write_Text(); $this -> _Img_Png(); } /** * 创建验证码的PNG图像 */ public function Create_Verify(){ $this -> BackgroundColor = ''; for($I = 0;$I < 3;$I++){ $this -> BackgroundColor .= dechex(mt_rand(20,155)); } $this -> _Create_Img_GB(True); $this -> _Create_Code(); $this -> _Write_Line(); $this -> _Write_Code(); $this -> _Img_Png(); } /** * 外部获取MD5加密后的验证码 * @return string */ public function Get_Verify(){ return md5($this -> _Code); } /** * 加载一个图像文件,并获取图像相关信息 * @param string $FilePath 图像相对路径地址 * @return $this|bool 成功返回对象,否则返回FALSE */ public function Load_Img($FilePath){ $FilePath = __WEBROOT__.$FilePath; if(!is_file($FilePath)){ $this -> LoadErr = "路径错误,文件不存在"; Return False; } $this -> _PicInfo = getimagesize($FilePath); $this -> _FileInfo = pathinfo($FilePath); switch($this -> _PicInfo[2]){ case 1:$this ->_FileImg = imagecreatefromgif($FilePath);break; case 2:$this ->_FileImg = imagecreatefromjpeg($FilePath);break; case 3:$this ->_FileImg = imagecreatefrompng($FilePath);break; default:$this -> LoadErr = "类型错误,不支持的图片类型";Return False; } Return True; } /** * 创建缩略图 * @param string $FileName 保存的图片名称前缀 * @param string $FilePath 保存图片的相对路径 * @return mixed 返回生成的图片的信息数组 */ public function Create_Thumb($FileName,$FilePath){ $SavePath = __WEBROOT__.$FilePath; if(!file_exists($SavePath)){ mkdir($SavePath,0777,true); } $FileName = $FileName.date("YmdHis").rand(100,999).'.'.$this -> _FileInfo['extension']; $FilePath = $FilePath.$FileName; $SavePath = $SavePath.$FileName; $this -> _Create_Img_GB(False); imagecopyresampled($this -> _Img,$this -> _FileImg,0,0,0,0,$this -> Width,$this -> Height,$this -> _PicInfo[0],$this -> _PicInfo[1]); switch($this -> _PicInfo[2]){ case 1:imagegif($this -> _Img,$SavePath);break; case 2:imagejpeg($this -> _Img,$SavePath);break; case 3:imagepng($this -> _Img,$SavePath);break; } $FIleInfo['FileName'] = $FileName; $FIleInfo['FilePath'] = $FilePath; Return $FIleInfo; } }
使用示例
$Img = new Img(); $Options['Width'] = 300; $Options['Height'] = 100; $Options['Content'] = "Test Create Img"; $Options['FontColor'] = "FF0000"; $Options['BackgroundColor'] = "AAAAAA"; $Img -> Style($Options) -> Create_Img_Jpg(); if($Img -> Load_Img("/Public/images/ad1.png")){ $FileInfo = $Img -> Style(array('Width'=>30,'Height'=>30)) -> Create_Thumb("Thumb","/Uploads/images/"); var_dump($FileInfo); }else{ die("加载图像失败,".$Img -> LoadErr); }
以上所述就是本文的全部内容了,希望大家能够喜欢。

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

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

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

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

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

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

뜨거운 주제











PHP 이미지 필터 효과를 구현하려면 특정 코드 예제가 필요합니다. 소개: 웹 개발 과정에서 이미지 필터 효과는 이미지의 생생함과 시각적 효과를 향상시키는 데 자주 사용됩니다. PHP 언어는 다양한 그림 필터 효과를 얻기 위한 일련의 함수와 방법을 제공합니다. 이 기사에서는 일반적으로 사용되는 그림 필터 효과와 그 구현 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. 밝기 조정 밝기 조정은 사진의 밝기와 어둠을 변경할 수 있는 일반적인 사진 필터 효과입니다. PHP에서는 imagefilte를 사용하여

PHP는 웹 개발에 널리 사용되는 프로그래밍 언어로, 읽기 쉽고 배우기 쉽습니다. 또한 이미지 처리 분야에서도 응용 가치가 높습니다. PHP5.5에서 PHP7.0으로 업그레이드하면서 PHP는 보다 효율적인 메모리 관리, 보다 빠른 실행 속도, 보다 풍부한 이미지 처리 기능 등을 포함하여 이미지 처리에 대한 일련의 최적화 및 개선을 이루었습니다. 이 기사에서는 PHP7.0에서 이미지 처리를 수행하는 방법을 자세히 소개합니다. 1. GD 라이브러리 이미지 처리는 웹 개발에 있어서 필수적인 부분입니다.

이 글은 PHP에서 타원을 그리는 방법을 자세히 설명할 것입니다. 편집자는 이것이 매우 실용적이라고 생각하므로, 이 글을 읽고 뭔가를 얻으실 수 있기를 바랍니다. PHP 그리기 타원 서문 PHP 언어는 풍부한 기능 라이브러리를 제공하며 그 중 GD 라이브러리는 이미지 처리에 특별히 사용되며 타원을 포함하여 PHP에서 다양한 모양을 그릴 수 있습니다. 타원 그리기 1. GD 라이브러리 로드 2. 이미지 생성

PHP는 이미지 처리를 포함하여 다양한 웹 작업을 처리할 수 있는 매우 널리 사용되는 서버측 스크립팅 언어입니다. 이 기사에서는 PHP의 몇 가지 이미지 처리 방법과 발생할 수 있는 몇 가지 일반적인 문제를 소개합니다. 1. PHP에서 이미지를 처리하는 방법 1. GD 라이브러리를 사용하세요 GD(GNU Image Process Library)는 이미지 처리를 위한 오픈 소스 라이브러리입니다. 이를 통해 PHP 개발자는 스크립트를 사용하여 크기 조정, 자르기, 회전, 필터링 및 그리기를 포함한 이미지를 생성하고 조작할 수 있습니다. GD 라이브러리를 사용하기 전에 다음 사항을 확인해야 합니다.

PHP 이미지 자르기 기술 요약, 특정 코드 예제가 필요합니다. 웹 개발에서는 이미지 자르기가 필요한 경우가 많습니다. 다양한 레이아웃 요구 사항에 적응하거나 페이지 로딩 속도를 향상시키려는 경우 이미지 자르기는 매우 중요한 기술입니다. 널리 사용되는 서버 측 스크립팅 언어인 PHP는 풍부한 이미지 처리 기능과 라이브러리를 제공하여 이미지 자르기를 더 쉽고 효율적으로 만듭니다. 이 기사에서는 일반적으로 사용되는 PHP 이미지 자르기 기술을 소개하고 특정 코드 예제를 제공합니다. 1. 사진을 자르는 GD 라이브러리 GD

웹 사이트 개발 시 이미지 특수 효과는 페이지의 아름다움을 높이고 사용자의 관심을 끌며 사용자에게 더 나은 경험을 제공할 수 있습니다. 강력한 백엔드 언어인 PHP는 이미지 특수 효과를 얻을 수 있는 다양한 방법도 제공합니다. 이 기사에서는 PHP에서 일반적으로 사용되는 이미지 효과와 그 구현 방법을 소개합니다. 이미지 크기 조정 이미지 크기 조정은 웹 사이트에서 반응형 디자인을 구현하는 일반적인 방법 중 하나입니다. imagecopyresampled() 함수는 이미지 크기 조정 작업을 완료하기 위해 PHP에서 제공됩니다. 이 함수의 프로토타입은 다음과 같습니다.

이미지 처리는 PHP 프로그래밍에서 매우 중요한 주제입니다. 웹 애플리케이션이 발전하면서 점점 더 많은 웹사이트에서 사용자의 관심을 끌기 위해 이미지를 사용해야 합니다. 따라서 PHP 개발자가 몇 가지 일반적인 이미지 처리 작업을 익히는 것이 매우 중요합니다. 이 기사에서는 PHP 개발자가 참조할 수 있는 몇 가지 일반적인 이미지 처리 작업을 소개합니다. 1. 이미지 스케일링 이미지 스케일링은 이미지 처리에서 가장 일반적인 작업 중 하나입니다. PHP는 이미지 크기를 조정하는 두 가지 방법을 제공합니다: ImageCopyResample()

PHP의 이미지 처리를 사용하고 인증 코드를 생성하는 방법은 무엇입니까? 인터넷의 발달과 함께 인증코드는 사용자의 진위를 보장하는 중요한 수단 중 하나가 되었습니다. 인증번호를 통해 로봇 출현, 악성 프로그램, 악용 등을 효과적으로 예방할 수 있습니다. PHP에서는 시스템의 보안과 신뢰성을 보장하기 위해 이미지 처리 기술을 사용하여 인증 코드를 생성할 수 있습니다. 이 글에서는 PHP의 이미지 처리를 사용하고 인증 코드를 생성하는 방법을 소개합니다. 먼저, 영상 처리의 기본 원리를 이해해야 합니다. 이미지 처리는 다양한 작업을 수행하는 프로세스입니다.
