Verwendung der allgemeinen PHP-Bildverarbeitungsklasse
In diesem Artikel wird hauptsächlich die von PHP implementierte allgemeine Bildverarbeitungsklasse vorgestellt, die Funktionen wie Zoomen, Schneiden, Fotorahmen, Wasserzeichen, Schärfen, Drehen, Spiegeln, Transparenz und Umkehrung von Bildern realisieren kann. Sie hat einen bestimmten Referenzwert. , Freunde, die es brauchen, können sich darauf beziehen
Die Beispiele in diesem Artikel beschreiben die von PHP implementierte allgemeine Bildverarbeitungsklasse. Teilen Sie es als Referenz mit allen. Die Details sind wie folgt:
Die Funktionen der Bildverarbeitungsfunktion: Zoomen, Ausschneiden, Fotorahmen, Wasserzeichen, Schärfen, Drehen, Spiegeln, Transparenz, Farbe umkehren, die Idee der Verarbeitung und Speicherung historischer Aufzeichnungen: wann Ein Bild wird geändert. Generieren Sie automatisch ein neues Bild. Bei der Benennungsmethode können Schritte basierend auf dem Originalbild hinzugefügt werden, zum Beispiel: Bildname + __ Schritte. In einigen Webanwendungen, die erweiterte Bildverarbeitungsfunktionen erfordern, können Sie auf diese Klasse verweisen.
<?php class picture { var $PICTURE_URL;//要处理的图片 var $DEST_URL="temp__01.jpg";//生成目标图片位置 var $PICTURE_CREATE;//要创建的图片 var $TURE_COLOR;//新建一个真彩图象 var $PICTURE_WIDTH;//原图片宽度 var $PICTURE_HEIGHT;//原图片高度 /* 水印的类型,默认的为水印文字 */ var $MARK_TYPE=1; var $WORD;//经过UTF-8后的文字 var $WORD_X;//文字横坐标 var $WORD_Y;//文字纵坐标 var $FONT_TYPE;//字体类型 var $FONT_SIZE="12";//字体大小 var $FONT_WORD;//文字 var $ANGLE=0;//文字的角度,默认为0 var $FONT_COLOR="#000000";//文字颜色 var $FONT_PATH="font/simkai.ttf";//字体库,默认为宋体 var $FORCE_URL;//水印图片 var $FORCE_X=0;//水印横坐标 var $FORCE_Y=0;//水印纵坐标 var $FORCE_START_X=0;//切起水印的图片横坐标 var $FORCE_START_Y=0;//切起水印的图片纵坐标 var $PICTURE_TYPE;//图片类型 var $PICTURE_MIME;//输出的头部 /* 缩放比例为1的话就按缩放高度和宽度缩放 */ var $ZOOM=1;//缩放类型 var $ZOOM_MULTIPLE;//缩放比例 var $ZOOM_WIDTH;//缩放宽度 var $ZOOM_HEIGHT;//缩放高度 /* 裁切,按比例和固定长度、宽度 */ var $CUT_TYPE=1;//裁切类型 var $CUT_X=0;//裁切的横坐标 var $CUT_Y=0;//裁切的纵坐标 var $CUT_;//裁切的宽度 var $CUT_HEIGHT=100;//裁切的高度 /* 锐化 */ var $SHARP="7.0";//锐化程度 /* 透明度处理 */ var $ALPHA='100';//透明度在0-127之间 var $ALPHA_X="90"; var $ALPHA_Y="50"; /* 任意角度旋转 */ var $CIRCUMROTATE="90.0";//注意,必须为浮点数 /* 出错信息 */ var $ERROR=array( 'unalviable'=>'没有找到相关图片!' ); /* 构造函数:函数初始化 */ function __construct($PICTURE_URL) { $this->get_info($PICTURE_URL); } function get_info($PICTURE_URL) { /* 处理原图片的信息,先检测图片是否存在,不存在则给出相应的信息 */ @$SIZE=getimagesize($PICTURE_URL); if(!$SIZE) { exit($this->ERROR['unalviable']); } //得到原图片的信息类型、宽度、高度 $this->PICTURE_MIME=$SIZE['mime']; $this->PICTURE_; $this->PICTURE_HEIGHT=$SIZE[1]; //创建图片 switch($SIZE[2]) { case 1: $this->PICTURE_CREATE=imagecreatefromgif($PICTURE_URL); $this->PICTURE_TYPE="imagejpeg"; $this->PICTURE_EXT="jpg"; break; case 2: $this->PICTURE_CREATE=imagecreatefromjpeg($PICTURE_URL); $this->PICTURE_TYPE="imagegif"; $this->PICTURE_EXT="gif"; break; case 3: $this->PICTURE_CREATE=imagecreatefrompng($PICTURE_URL); $this->PICTURE_TYPE="imagepng"; $this->PICTURE_EXT="png"; break; } /* 文字颜色转换16进制转换成10进制 */ preg_match_all("/([0-f]){2,2}/i",$this->FONT_COLOR,$MATCHES); if(count($MATCHES)==3) { $this->RED=hexdec($MATCHES[0][0]); $this->GREEN=hexdec($MATCHES[0][1]); $this->BLUE=hexdec($MATCHES[0][2]); } } //end of __construct /* 将16进制的颜色转换成10进制的(R,G,B) */ function hex2dec() { preg_match_all("/([0-f]){2,2}/i",$this->FONT_COLOR,$MATCHES); if(count($MATCHES)==3) { $this->RED=hexdec($MATCHES[0][0]); $this->GREEN=hexdec($MATCHES[0][1]); $this->BLUE=hexdec($MATCHES[0][2]); } } //缩放类型 function zoom_type($ZOOM_TYPE) { $this->ZOOM=$ZOOM_TYPE; } //对图片进行缩放,如果不指定高度和宽度就进行缩放 function zoom() { //缩放的大小 if($this->ZOOM==0) { $this->ZOOM_;gt;PICTURE_WIDTH * $this->ZOOM_MULTIPLE; $this->ZOOM_HEIGHT=$this->PICTURE_HEIGHT * $this->ZOOM_MULTIPLE; } //新建一个真彩图象 $this->TRUE_COLOR=imagecreatetruecolor($this->ZOOM_WIDTH,$this->ZOOM_HEIGHT); $WHITE=imagecolorallocate($this->TRUE_COLOR,255,255,255); imagefilledrectangle($this->TRUE_COLOR,0,0,$this->ZOOM_WIDTH,$this->ZOOM_HEIGHT,$WHITE); imagecopyresized($this->TRUE_COLOR,$this->PICTURE_CREATE,0,0,0,0,$this->ZOOM_WIDTH,$this->ZOOM_HEIGHT,$this->PICTURE_WIDTH,$this->PICTURE_HEIGHT); } //end of zoom //裁切图片,按坐标或自动 function cut() { $this->TRUE_COLOR=imagecreatetruecolor($this->CUT_WIDTH,$this->CUT_WIDTH); imagecopy($this->TRUE_COLOR,$this->PICTURE_CREATE, 0, 0, $this->CUT_X, $this->CUT_Y,$this->CUT_WIDTH,$this->CUT_HEIGHT); } //end of cut /* 在图片上放文字或图片 水印文字 */ function _mark_text() { $this->TRUE_COLOR=imagecreatetruecolor($this->PICTURE_WIDTH,$this->PICTURE_HEIGHT); $this->WORD=mb_convert_encoding($this->FONT_WORD,'utf-8','gb2312'); /* 取得使用 TrueType 字体的文本的范围 */ $TEMP = imagettfbbox($this->FONT_SIZE,0,$this->FONT_PATH,$this->WORD); $WORD_LENGTH=strlen($this->WORD); $WORD_WIDTH =$TEMP[2] - $TEMP[6]; $WORD_HEIGHT =$TEMP[3] - $TEMP[7]; /* 文字水印的默认位置为右下角 */ if($this->WORD_X=="") { $this->WORD_X=$this->PICTURE_WIDTH-$WORD_WIDTH; } if($this->WORD_Y=="") { $this->WORD_Y=$this->PICTURE_HEIGHT-$WORD_HEIGHT; } imagesettile($this->TRUE_COLOR,$this->PICTURE_CREATE); imagefilledrectangle($this->TRUE_COLOR,0,0,$this->PICTURE_WIDTH,$this->PICTURE_HEIGHT,IMG_COLOR_TILED); $TEXT2=imagecolorallocate($this->TRUE_COLOR,$this->RED,$this->GREEN,$this->Blue); imagettftext($this->TRUE_COLOR,$this->FONT_SIZE,$this->ANGLE,$this->WORD_X,$this->WORD_Y,$TEXT2,$this->FONT_PATH,$this->WORD); } /* 水印图片 */ function _mark_picture() { /* 获取水印图片的信息 */ @$SIZE=getimagesize($this->FORCE_URL); if(!$SIZE) { exit($this->ERROR['unalviable']); } $FORCE_PICTURE_; $FORCE_PICTURE_HEIGHT=$SIZE[1]; //创建水印图片 switch($SIZE[2]) { case 1: $FORCE_PICTURE_CREATE=imagecreatefromgif($this->FORCE_URL); $FORCE_PICTURE_TYPE="gif"; break; case 2: $FORCE_PICTURE_CREATE=imagecreatefromjpeg($this->FORCE_URL); $FORCE_PICTURE_TYPE="jpg"; break; case 3: $FORCE_PICTURE_CREATE=imagecreatefrompng($this->FORCE_URL); $FORCE_PICTURE_TYPE="png"; break; } /* 判断水印图片的大小,并生成目标图片的大小,如果水印比图片大,则生成图片大小为水印图片的大小。否则生成的图片大小为原图片大小。 */ $this->NEW_PICTURE=$this->PICTURE_CREATE; if($FORCE_PICTURE_WIDTH>$this->PICTURE_WIDTH) { $CREATE_;gt;FORCE_START_X; } else { $CREATE_;gt;PICTURE_WIDTH; } if($FORCE_PICTURE_HEIGHT>$this->PICTURE_HEIGHT) { $CREATE_HEIGHT=$FORCE_PICTURE_HEIGHT-$this->FORCE_START_Y; } else { $CREATE_HEIGHT=$this->PICTURE_HEIGHT; } /* 创建一个画布 */ $NEW_PICTURE_CREATE=imagecreatetruecolor($CREATE_WIDTH,$CREATE_HEIGHT); $WHITE=imagecolorallocate($NEW_PICTURE_CREATE,255,255,255); /* 将背景图拷贝到画布中 */ imagecopy($NEW_PICTURE_CREATE, $this->PICTURE_CREATE, 0, 0, 0, 0,$this->PICTURE_WIDTH,$this->PICTURE_HEIGHT); /* 将目标图片拷贝到背景图片上 */ imagecopy($NEW_PICTURE_CREATE, $FORCE_PICTURE_CREATE, $this->FORCE_X, $this->FORCE_Y, $this->FORCE_START_X, $this->FORCE_START_Y,$FORCE_PICTURE_WIDTH,$FORCE_PICTURE_HEIGHT); $this->TRUE_COLOR=$NEW_PICTURE_CREATE; } //end of mark function alpha_() { $this->TRUE_COLOR=imagecreatetruecolor($this->PICTURE_WIDTH,$this->PICTURE_HEIGHT); $rgb="#CDCDCD"; $tran_color="#000000"; for($j=0;$j<=$this->PICTURE_HEIGHT-1;$j++) { for ($i=0;$i<=$this->PICTURE_WIDTH-1;$i++) { $rgb = imagecolorat($this->PICTURE_CREATE,$i,$j); $r = ($rgb >> 16) & 0xFF; $g = ($rgb >> 8) & 0xFF; $b = $rgb & 0xFF; $now_color=imagecolorallocate($this->PICTURE_CREATE,$r,$g,$b); if ($now_color==$tran_color) { continue; } else { $color=imagecolorallocatealpha($this->PICTURE_CREATE,$r,$g,$b,$ALPHA); imagesetpixel($this->PICTURE_CREATE,$ALPHA_X+$i,$ALPHA_Y+$j,$color); } $this->TRUE_COLOR=$this->PICTURE_CREATE; } } } /* 图片旋转: 沿y轴旋转 */ function turn_y() { $this->TRUE_COLOR=imagecreatetruecolor($this->PICTURE_WIDTH,$this->PICTURE_HEIGHT); for ($x = 0; $x < $this->PICTURE_WIDTH; $x++) { imagecopy($this->TRUE_COLOR, $this->PICTURE_CREATE, $this->PICTURE_WIDTH - $x - 1, 0, $x, 0, 1, $this->PICTURE_HEIGHT); } } /* 沿X轴旋转 */ function turn_x() { $this->TRUE_COLOR=imagecreatetruecolor($this->PICTURE_WIDTH,$this->PICTURE_HEIGHT); for ($y = 0; $y < $this->PICTURE_HEIGHT; $y++) { imagecopy($this->TRUE_COLOR, $this->PICTURE_CREATE, 0, $this->PICTURE_HEIGHT - $y - 1, 0, $y, $this->PICTURE_WIDTH, 1); } } /* 任意角度旋转 */ function turn() { $this->TRUE_COLOR=imagecreatetruecolor($this->PICTURE_WIDTH,$this->PICTURE_HEIGHT); imageCopyResized($this->TRUE_COLOR,$this->PICTURE_CREATE,0,0,0,0,$this->PICTURE_WIDTH,$this->PICTURE_HEIGHT,$this->PICTURE_WIDTH,$this->PICTURE_HEIGHT); $WHITE=imagecolorallocate($this->TRUE_COLOR,255,255,255); $this->TRUE_COLOR=imagerotate ($this->TRUE_COLOR, $this->CIRCUMROTATE, $WHITE); } /* 图片锐化 */ function sharp() { $this->TRUE_COLOR=imagecreatetruecolor($this->PICTURE_WIDTH,$this->PICTURE_HEIGHT); $cnt=0; for ($x=0; $x<$this->PICTURE_WIDTH; $x++) { for ($y=0; $y<$this->PICTURE_HEIGHT; $y++) { $src_clr1 = imagecolorsforindex($this->TRUE_COLOR, imagecolorat($this->PICTURE_CREATE, $x-1, $y-1)); $src_clr2 = imagecolorsforindex($this->TRUE_COLOR, imagecolorat($this->PICTURE_CREATE, $x, $y)); $r = intval($src_clr2["red"]+$this->SHARP*($src_clr2["red"]-$src_clr1["red"])); $g = intval($src_clr2["green"]+$this->SHARP*($src_clr2["green"]-$src_clr1["green"])); $b = intval($src_clr2["blue"]+$this->SHARP*($src_clr2["blue"]-$src_clr1["blue"])); $r = min(255, max($r, 0)); $g = min(255, max($g, 0)); $b = min(255, max($b, 0)); if (($DST_CLR=imagecolorexact($this->PICTURE_CREATE, $r, $g, $b))==-1) $DST_CLR = imagecolorallocate($this->PICTURE_CREATE, $r, $g, $b); $cnt++; if ($DST_CLR==-1) die("color allocate faile at $x, $y ($cnt)."); imagesetpixel($this->TRUE_COLOR, $x, $y, $DST_CLR); } } } /* 将图片反色处理?? */ function return_color() { /* 创建一个画布 */ $NEW_PICTURE_CREATE=imagecreate($this->PICTURE_WIDTH,$this->PICTURE_HEIGHT); $WHITE=imagecolorallocate($NEW_PICTURE_CREATE,255,255,255); /* 将背景图拷贝到画布中 */ imagecopy($NEW_PICTURE_CREATE, $this->PICTURE_CREATE, 0, 0, 0, 0,$this->PICTURE_WIDTH,$this->PICTURE_HEIGHT); $this->TRUE_COLOR=$NEW_PICTURE_CREATE; } /* 生成目标图片并显示 */ function show() { // 判断浏览器,若是IE就不发送头 if(isset($_SERVER['HTTP_USER_AGENT'])) { $ua = strtoupper($_SERVER['HTTP_USER_AGENT']); if(!preg_match('/^.*MSIE.*\)$/i',$ua)) { header("Content-type:$this->PICTURE_MIME"); } } $OUT=$this->PICTURE_TYPE; $OUT($this->TRUE_COLOR); } /* 生成目标图片并保存 */ function save_picture() { // 以 JPEG 格式将图像输出到浏览器或文件 $OUT=$this->PICTURE_TYPE; if(function_exists($OUT)) { // 判断浏览器,若是IE就不发送头 if(isset($_SERVER['HTTP_USER_AGENT'])) { $ua = strtoupper($_SERVER['HTTP_USER_AGENT']); if(!preg_match('/^.*MSIE.*\)$/i',$ua)) { header("Content-type:$this->PICTURE_MIME"); } } if(!$this->TRUE_COLOR) { exit($this->ERROR['unavilable']); } else { $OUT($this->TRUE_COLOR,$this->DEST_URL); $OUT($this->TRUE_COLOR); } } } /* 析构函数:释放图片 */ function __destruct() { /*释放图片*/ imagedestroy($this->TRUE_COLOR); imagedestroy($this->PICTURE_CREATE); } //end of class } ?>
Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.
Verwandte Empfehlungen:
Benutzerdefinierte PHP-Array-Variablen speichern Zeitzoneninformationen auf der ganzen Welt
PHP-Array-Aufruf- und Funktionsausführungsmethoden
Das obige ist der detaillierte Inhalt vonVerwendung der allgemeinen PHP-Bildverarbeitungsklasse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

Wenn Sie ein erfahrener PHP-Entwickler sind, haben Sie möglicherweise das Gefühl, dass Sie dort waren und dies bereits getan haben. Sie haben eine beträchtliche Anzahl von Anwendungen entwickelt, Millionen von Codezeilen debuggt und eine Reihe von Skripten optimiert, um op zu erreichen

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Dieses Tutorial zeigt, wie XML -Dokumente mit PHP effizient verarbeitet werden. XML (Extensible Markup-Sprache) ist eine vielseitige textbasierte Markup-Sprache, die sowohl für die Lesbarkeit des Menschen als auch für die Analyse von Maschinen entwickelt wurde. Es wird üblicherweise für die Datenspeicherung ein verwendet und wird häufig verwendet

Eine Zeichenfolge ist eine Folge von Zeichen, einschließlich Buchstaben, Zahlen und Symbolen. In diesem Tutorial wird lernen, wie Sie die Anzahl der Vokale in einer bestimmten Zeichenfolge in PHP unter Verwendung verschiedener Methoden berechnen. Die Vokale auf Englisch sind a, e, i, o, u und sie können Großbuchstaben oder Kleinbuchstaben sein. Was ist ein Vokal? Vokale sind alphabetische Zeichen, die eine spezifische Aussprache darstellen. Es gibt fünf Vokale in Englisch, einschließlich Großbuchstaben und Kleinbuchstaben: a, e, ich, o, u Beispiel 1 Eingabe: String = "TutorialPoint" Ausgabe: 6 erklären Die Vokale in der String "TutorialPoint" sind u, o, i, a, o, ich. Insgesamt gibt es 6 Yuan

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Was sind die magischen Methoden von PHP? Zu den magischen Methoden von PHP gehören: 1. \ _ \ _ Konstrukt, verwendet, um Objekte zu initialisieren; 2. \ _ \ _ Destruct, verwendet zur Reinigung von Ressourcen; 3. \ _ \ _ Call, behandeln Sie nicht existierende Methodenaufrufe; 4. \ _ \ _ GET, Implementieren Sie den dynamischen Attributzugriff; 5. \ _ \ _ Setzen Sie dynamische Attributeinstellungen. Diese Methoden werden in bestimmten Situationen automatisch aufgerufen, wodurch die Code -Flexibilität und -Effizienz verbessert werden.
