Heim Backend-Entwicklung PHP-Tutorial php生成水印,包括位置和透明度_PHP教程

php生成水印,包括位置和透明度_PHP教程

Jul 13, 2016 pm 05:46 PM
php einmal hauptsächlich 位置 图片 推荐 水印 生成 von 缩放 裁剪 透明度

 

/*

给大家推荐一下!主要包括图片的裁剪,缩放,加水印等。下面是一些简单的使用方法。

include("imageclass.php");   //这里注意imageclass.php的路径

$imgs=new image();

$imgs->param($tempFile);

if(!$imgs->thumb($targetFile,600,500))die('--图像上传失败!');  //对图片进行缩放

 

$imgs->water($targetFile,$water,$pos=0,$pct=50);主要包括两个参数,$targetFile为已经上传到服务器的文件路径,$water为水印图片,$pos为水印图片位置,$pct为透明度;

$pos位置说明:

0://随机

1://1为顶端居左

2://2为顶端居中

3://3为顶端居右

4://4为中部居左

5://5为中部居中

6://6为中部居右

7://7为底端居左

8://8为底端居中

9://9为底端居右

 

 

将//里边的内容保存在imageclass.php里边,就可以调用了。

///////////////////////////////////////////////////////////////

*/

?>

/* +-------------------------------------------------------------+

* | Copyright (c) 2008-2009 Diqiye.Com All rights reserved.

* +-------------------------------------------------------------+

* | Info : 图像处理类

* +-------------------------------------------------------------+

*/

class image {

        // 当前图片

        protected $img;

        // 图像types 对应表

        protected $types = array(

                        1 => 'gif',

                        2 => 'jpg',

                        3 => 'png',

                        6 => 'bmp'

                    );

 

        // image

        public function __construct($img=''){

                !$img && $this->param($img);

        }

 

        // Info

        public function param($img){

                $this->img = $img;

                return $this;

        }

 

        // imageInfo

        public function getImageInfo($img){

                $info = @getimagesize($img);

                if(isset($this->types[$info[2]])){

                        $info['ext'] = $info['type'] = $this->types[$info[2]];

                } else{

                        $info['ext'] = $info['type'] = 'jpg';

                }

                $info['type'] == 'jpg' && $info['type'] = 'jpeg';

                $info['size'] = @filesize($img);

                return $info;

        }

 

        // thumb(新图地址, 宽, 高, 裁剪, 允许放大)

        public function thumb($filename,$new_w=160,$new_h=120,$cut=0,$big=0){

       

        // 获取原图信息

        $info  = $this->getImageInfo($this->img);

        if(!empty($info[0])) {

            $old_w  = $info[0];

            $old_h  = $info[1];

            $type   = $info['type'];

            $ext    = $info['ext'];

            unset($info);

            // 如果原图比缩略图小 并且不允许放大

            if($old_w

                    return false;

            }

            // 裁剪图片

            if($cut == 0){ // 等比列

                    $scale = min($new_w/$old_w, $new_h/$old_h); // 计算缩放比例

                    $width  = (int)($old_w*$scale); // 缩略图尺寸

                    $height = (int)($old_h*$scale);

                    $start_w = $start_h = 0;

                    $end_w = $old_w;

                    $end_h = $old_h;

            } elseif($cut == 1){ // center center 裁剪

                        $scale1 = round($new_w/$new_h,2);

                        $scale2 = round($old_w/$old_h,2);

                        if($scale1 > $scale2){

                                $end_h = round($old_w/$scale1,2);

                                $start_h = ($old_h-$end_h)/2;

                                $start_w  = 0;

                                $end_w    = $old_w;

                        } else{

                                $end_w  = round($old_h*$scale1,2);

                                $start_w  = ($old_w-$end_w)/2;

                                $start_h = 0;

                                $end_h   = $old_h;

                        }

                        $width = $new_w;

                    $height= $new_h;

                } elseif($cut == 2){ // left top 裁剪

                        $scale1 = round($new_w/$new_h,2);

                    $scale2 = round($old_w/$old_h,2);

                    if($scale1 > $scale2){

                            $end_h = round($old_w/$scale1,2);

                            $end_w = $old_w;

                    } else{

                            $end_w = round($old_h*$scale1,2);

                            $end_h = $old_h;

                    }

                    $start_w = 0;

                    $start_h = 0;

                    $width = $new_w;

                    $height= $new_h;

                }

            // 载入原图

            $createFun  = 'ImageCreateFrom'.$type;

            $oldimg     = $createFun($this->img);

            // 创建缩略图

            if($type!='gif' && function_exists('imagecreatetruecolor')){

                $newimg = imagecreatetruecolor($width, $height);

            } else{

                $newimg = imagecreate($width, $height);

            }

            // 复制图片

            if(function_exists("ImageCopyResampled")){

                    ImageCopyResampled($newimg, $oldimg, 0, 0, $start_w, $start_h, $width, $height, $end_w,$end_h);

            } else{

                ImageCopyResized($newimg, $oldimg, 0, 0, $start_w, $start_h, $width, $height, $end_w,$end_h);

            }

 

            // 对jpeg图形设置隔行扫描

            $type == 'jpeg' && imageinterlace($newimg,1);

            // 生成图片

            $imageFun = 'image'.$type;

            !@$imageFun($newimg,$filename,100) && die('保存失败!检查目录是否存在并且可写?');

            ImageDestroy($newimg);

            ImageDestroy($oldimg);

            return $filename;

        }

        return false;

    }

 

    // water(保存地址,水印图片,水印位置,透明度)

        public function water($filename,$water,$pos=0,$pct=50){

                // 加载水印图片

                $info = $this->getImageInfo($water);

                if(!empty($info[0])){

                        $water_w = $info[0];

                        $water_h = $info[1];

                        $type = $info['type'];

                        $fun  = 'imagecreatefrom'.$type;

                        $waterimg = $fun($water);

                } else{

                        return false;

                }

                // 加载背景图片

                $info = $this->getImageInfo($this->img);

                if(!empty($info[0])){

                        $old_w = $info[0];

                        $old_h = $info[1];

                        $type  = $info['type'];

                        $fun   = 'imagecreatefrom'.$type;

                        $oldimg = $fun($this->img);

                } else{

                        return false;

                }

                // 剪切水印

                $water_w >$old_w && $water_w = $old_w;

                $water_h >$old_h && $water_h = $old_h;

 

                // 水印位置

                switch($pos){

                    case 0://随机

                    $posX = rand(0,($old_w - $water_w));

                    $posY = rand(0,($old_h - $water_h));

                    break;

                case 1://1为顶端居左

                    $posX = 0;

                    $posY = 0;

                    break;

                case 2://2为顶端居中

                    $posX = ($old_w - $water_w) / 2;

                    $posY = 0;

                    break;

                case 3://3为顶端居右

                    $posX = $old_w - $water_w;

                    $posY = 0;

                    break;

                case 4://4为中部居左

                    $posX = 0;

                    $posY = ($old_h - $water_h) / 2;

                    break;

                case 5://5为中部居中

                    $posX = ($old_w - $water_w) / 2;

                    $posY = ($old_h - $water_h) / 2;

                    break;

                case 6://6为中部居右

                    $posX = $old_w - $water_w;

                    $posY = ($old_h - $water_h) / 2;

                    break;

                case 7://7为底端居左

                    $posX = 0;

                    $posY = $old_h - $water_h;

                    break;

                case 8://8为底端居中

                    $posX = ($old_w - $water_w) / 2;

                    $posY = $old_h - $water_h;

                    break;

                case 9://9为底端居右

                    $posX = $old_w - $water_w;

                    $posY = $old_h - $water_h;

                    break;

                default: //随机

                    $posX = rand(0,($old_w - $water_w));

                    $posY = rand(0,($old_h - $water_h));

                    break;

                }

            // 设定图像的混色模式

                imagealphablending($oldimg, true);

                // 添加水印

                imagecopymerge($oldimg, $waterimg, $posX, $posY, 0, 0, $water_w,$water_h,$pct);

                $fun = 'image'.$type;

                !@$fun($oldimg, $filename,100) && die('保存失败!检查目录是否存在并且可写?');

                  imagedestroy($oldimg);

                  imagedestroy($waterimg);

                  return $filename;

        }

}

 

$imgs=new image();

$tempFile = "./images/hdb.jpg";

$water = "./images/bamiluo.jpg";

 

$imgs->param($tempFile);

//if(!$imgs->thumb($targetFile,600,500))die('fail');

 

$imgs->water($targetFile,$water,0,10);

echo "aaa";

?>

摘自:ws07_byyy的专栏

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/478568.htmlTechArticle?php /* 给大家推荐一下!主要包括图片的裁剪,缩放,加水印等。下面是一些简单的使用方法。 include(imageclass.php); //这里注意imageclass.php的...
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

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.

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein Dec 20, 2024 am 11:31 AM

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

7 PHP-Funktionen, die ich leider vorher nicht kannte 7 PHP-Funktionen, die ich leider vorher nicht kannte Nov 13, 2024 am 09:42 AM

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

Wie analysiert und verarbeitet man HTML/XML in PHP? Wie analysiert und verarbeitet man HTML/XML in PHP? Feb 07, 2025 am 11:57 AM

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

Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Apr 05, 2025 am 12:04 AM

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.

PHP -Programm zum Zählen von Vokalen in einer Zeichenfolge PHP -Programm zum Zählen von Vokalen in einer Zeichenfolge Feb 07, 2025 pm 12:12 PM

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

Erklären Sie die späte statische Bindung in PHP (statisch: :). Erklären Sie die späte statische Bindung in PHP (statisch: :). Apr 03, 2025 am 12:04 AM

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 PHP Magic -Methoden (__construct, __Destruct, __call, __get, __set usw.) und geben Sie Anwendungsfälle an? Was sind PHP Magic -Methoden (__construct, __Destruct, __call, __get, __set usw.) und geben Sie Anwendungsfälle an? Apr 03, 2025 am 12:03 AM

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.

See all articles