|
一个php图片处理类,可以缩放图片,可以给图片加水印,有需要的朋友,可以参考下。
代码如下:
<?php class Image {
private $path;
//构造方法用来对图片所在位置进行初使化
function __construct($path="./"){
$this->path=rtrim($path, "/")."/";
}
/* 对图片进行缩放
*
* 参数$name: 是需要处理的图片名称
* 参数$width:是缩放后的宽度
* 参数$height:是缩放后的高度
* 参数$qz: 是新图片的名称前缀
* 返回值:就是缩放后的图片名称,失败则返回false
*
*/
function thumb($name, $width, $height, $qz="th_"){
//获取图片信息
$imgInfo=$this->getInfo($name); //图片的宽度,高度,类型
//获取图片资源, 各种类型的图片都可以创建资源 jpg, gif, png
$srcImg=$this->getImg($name, $imgInfo);
//获取计算图片等比例之后的大小, $size["width"], $size["height"]
$size=$this->getNewSize($name, $width, $height, $imgInfo);
//获取新的图片资源, 处理一下gif透明背景
$newImg=$this->kidOfImage($srcImg, $size, $imgInfo);
//另存为一个新的图片,返回新的缩放后的图片名称
return $this->createNewImage($newImg, $qz.$name, $imgInfo);
}
private function createNewImage($newImg, $newName, $imgInfo){
switch($imgInfo["type"]){
case 1://gif
$result=imageGif($newImg, $this->path.$newName);
break;
case 2://jpg
$result=imageJPEG($newImg, $this->path.$newName);
break;
case 3://png
$return=imagepng($newImg, $this->path.$newName);
break;
}
imagedestroy($newImg);
return $newName;
}
private function kidOfImage($srcImg, $size, $imgInfo){
$newImg=imagecreatetruecolor($size["width"], $size["height"]);
$otsc=imagecolortransparent($srcImg);
if($otsc >=0 && $otsc $imgInfo["height"] * $size["height"]){
$size["height"]=round($imgInfo["height"]*$size["width"]/$imgInfo["width"]);
}else{
$size["width"]=round($imgInfo["width"]*$size["height"]/$imgInfo["height"]);
}
return $size;
}
private function getInfo($name){
$data=getImageSize($this->path.$name);
$imageInfo["width"]=$data[0];
$imageInfo["height"]=$data[1];
$imageInfo["type"]=$data[2];
return $imageInfo;
}
private function getImg($name, $imgInfo){
$srcPic=$this->path.$name;
switch($imgInfo["type"]){
case 1: //gif
$img=imagecreatefromgif($srcPic);
break;
case 2: //jpg
$img=imageCreatefromjpeg($srcPic);
break;
case 3: //png
$img=imageCreatefrompng($srcPic);
break;
default:
return false;
}
return $img;
}
/* 功能:为图片加水印图片
* 参数$groundName: 背景图片,即需要加水印的图片
* 参数$waterName: 水钱图片
* 参数#aterPost:水印位置, 10种状态,
* 0为随机位置
*
* 1. 为顶端居左 2. 为顶端居中 3 为顶端居右
* 4 为中部居左 5. 为中部居中 6 为中部居右
* 7 . 为底端居左 8. 为底端居中, 9. 为底端居右
*
* 参数$qz : 是加水印后的图片名称前缀
* 返回值:就是处理后图片的名称
*
*/
function waterMark($groundName, $waterName, $waterPos=0, $qz="wa_"){
if(file_exists($this->path.$groundName) && file_exists($this->path.$waterName)){
$groundInfo=$this->getInfo($groundName);
$waterInfo=$this->getInfo($waterName);
//水印的位置
if(!$pos=$this->position($groundInfo, $waterInfo, $waterPos)){
echo "水印不应该比背景图片小!";
return;
}
$groundImg=$this->getImg($groundName, $groundInfo);
$waterImg=$this->getImg($waterName, $waterInfo);
$groundImg=$this->copyImage($groundImg, $waterImg, $pos, $waterInfo);
return $this->createNewImage($groundImg, $qz.$groundName, $groundInfo);
}else{
echo "图片或水印图片不存在";
return false;
}
}
private function copyImage($groundImg, $waterImg, $pos, $waterInfo){
imagecopy($groundImg, $waterImg, $pos["posX"], $pos["posY"], 0, 0, $waterInfo["width"], $waterInfo["height"]);
imagedestroy($waterImg);
return $groundImg;
}
private function position($groundInfo, $waterInfo, $waterPos){
//需要背景比水印图片大
if(($groundInfo["width"]$posX, "posY"=>$posY);
}
} |
0
0
相关文章
php实现班级通信录导入大小写敏感_php统一大小写导入法【步骤】
php读取rtf文件能转为markdown吗_php读取rtf转md法【教程】
php实现班级通信录怎么导入带图片_php导入图片存通信录【步骤】
初学者学php字符串咋拼接_初学者学php字符串拼接方法【操作】
php静态网页设计能否实现响应式布局_php静态网页设计响应式实现技巧【方法】
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门AI工具
相关专题
本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。
616
2026.02.13
本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。
194
2026.02.13
本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。
91
2026.02.13
本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。
20
2026.02.13
本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。
54
2026.02.13
本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。
15
2026.02.12
本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。
598
2026.02.12
本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。
56
2026.02.12
热门下载
精品课程
共10课时 | 0.7万人学习
共28课时 | 10.1万人学习
共116课时 | 26.8万人学习
最新文章



