php生成水印,包括位置和透明度_PHP教程
/*
给大家推荐一下!主要包括图片的裁剪,缩放,加水印等。下面是一些简单的使用方法。
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的专栏

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

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

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.

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

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

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

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.

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.
