php实现logo的上传,PHP实现图片的等比缩放和Logo水印功能示例
本文实例讲述了PHP实现图片的等比缩放和Logo水印功能。分享给大家供大家参考,具体如下:
/**
* 等比缩放函数(以保存的方式实现)
* @param string $picname 被缩放的处理图片源
* @param int $maxx 缩放后图片的最大宽度
* @param int $maxy 缩放后图片的最大高度
* @param string $pre 缩放后图片名的前缀名
* @return String 返回后的图片名称(带路径),如a.jpg=>s_a.jpg
*/
function imageUpdateSize($picname,$maxx=100,$maxy=100,$pre="s_"){
$info = getimageSize($picname); //获取图片的基本信息
$w = $info[0];//获取宽度
$h = $info[1];//获取高度
//获取图片的类型并为此创建对应图片资源
switch($info[2]){
case 1: //gif
$im = imagecreatefromgif($picname);
break;
case 2: //jpg
$im = imagecreatefromjpeg($picname);
break;
case 3: //png
$im = imagecreatefrompng($picname);
break;
default:
die("图片类型错误!");
}
//计算缩放比例
if(($maxx/$w)>($maxy/$h)){
$b = $maxy/$h;
}else{
$b = $maxx/$w;
}
//计算出缩放后的尺寸
$nw = floor($w*$b);
$nh = floor($h*$b);
//创建一个新的图像源(目标图像)
$nim = imagecreatetruecolor($nw,$nh);
//执行等比缩放
imagecopyresampled($nim,$im,0,0,0,0,$nw,$nh,$w,$h);
//输出图像(根据源图像的类型,输出为对应的类型)
$picinfo = pathinfo($picname);//解析源图像的名字和路径信息
$newpicname= $picinfo["dirname"]."/".$pre.$picinfo["basename"];
switch($info[2]){
case 1:
imagegif($nim,$newpicname);
break;
case 2:
imagejpeg($nim,$newpicname);
break;
case 3:
imagepng($nim,$newpicname);
break;
}
//释放图片资源
imagedestroy($im);
imagedestroy($nim);
//返回结果
return $newpicname;
}
//测试:
//echo imageUpdateSize("./images/bg.jpg",200,200,"ss_"); // ./images/s_bg.jpg
/**
* 为一张图片添加上一个logo图片水印(以保存的方式实现)
* @param string $picname 被处理图片源
* @param string $logo 水印图片
* @param string $pre 处理后图片名的前缀名
* @return String 返回后的图片名称(带路径),如a.jpg=>n_a.jpg
*/
function imageUpdateLogo($picname,$logo,$pre="n_"){
$picnameinfo = getimageSize($picname); //获取图片源的基本信息
$logoinfo = getimageSize($logo); //获取logo图片的基本信息
//var_dump($logoinfo);
//根据图片类型创建出对应的图片源
switch($picnameinfo[2]){
case 1: //gif
$im = imagecreatefromgif($picname);
break;
case 2: //jpg
$im = imagecreatefromjpeg($picname);
break;
case 3: //png
$im = imagecreatefrompng($picname);
break;
default:
die("图片类型错误!");
}
//根据logo图片类型创建出对应的图片源
switch($logoinfo[2]){
case 1: //gif
$logoim = imagecreatefromgif($logo);
break;
case 2: //jpg
$logoim = imagecreatefromjpeg($logo);
break;
case 3: //png
$logoim = imagecreatefrompng($logo);
break;
default:
die("logo图片类型错误!");
}
//执行图片水印处理
imagecopyresampled($im,$logoim,$picnameinfo[0]-$logoinfo[0],$picnameinfo[1]-$logoinfo[1],0,0,$logoinfo[0],$logoinfo[1],$logoinfo[0],$logoinfo[1]);
//输出图像(根据源图像的类型,输出为对应的类型)
$picinfo = pathinfo($picname);//解析源图像的名字和路径信息
$newpicname= $picinfo["dirname"]."/".$pre.$picinfo["basename"];
switch($picnameinfo[2]){
case 1:
imagegif($im,$newpicname);
break;
case 2:
imagejpeg($im,$newpicname);
break;
case 3:
imagepng($im,$newpicname);
break;
}
//释放图片资源
imagedestroy($im);
imagedestroy($logoim);
//返回结果
return $newpicname;
}
//测试
echo imageUpdateLogo("./images/bg2.jpg","./images/s_1.png");
PS:这里再为大家推荐几款比较实用的图片处理工具供大家参考使用:
希望本文所述对大家PHP程序设计有所帮助。
php实现logo的上传,PHP实现图片的等比缩放和Logo水印功能示例相关推荐
- dropzonejs中文翻译手册 DropzoneJS是一个提供文件拖拽上传并且提供图片预览的开源类库....
http://wxb.github.io/dropzonejs.com.zh-CN/dropzonezh-CN/ 由于项目需要,完成一个web的图片拖拽上传,也就顺便学习和了解了一下前端的比较新的技术 ...
- svg上传服务器无法显示,让WordPress支持上传SVG格式图片并显示在媒体库中的方法...
让WordPress支持上传SVG格式图片并显示在媒体库中的方法 发布时间:2020-12-11 14:18:12 来源:亿速云 阅读:167 作者:小新 这篇文章将为大家详细讲解有关让WordPre ...
- html5 图片上传,支持图片预览、压缩、及进度显示,兼容IE6+及标准浏览器
原文:html5 图片上传,支持图片预览.压缩.及进度显示,兼容IE6+及标准浏览器 以前写过上传组件,见 打造 html5 文件上传组件,实现进度显示及拖拽上传,兼容IE6+及其它标准浏览器,对付一 ...
- vue-quill-editor上传内容由于图片是base64的导致字符太长的问题解决
vue-quill-editor上传内容由于图片是base64的导致字符太长的问题解决 参考文章: (1)vue-quill-editor上传内容由于图片是base64的导致字符太长的问题解决 (2) ...
- linux禁止客户端上传文件_图片/文件上传如此简单|macOS 图床客户端 uPic
前言 相信很多人在写作(特别是需要多平台发布)的时候都会因为插图而增加工作量: 平台图片外链不允许在网站外部访问. 使用云图床服务上传流程复杂. 那么这些问题有没有办法解决呢,答案肯定是"有 ...
- ueditor百度编辑器中,多图上传后,图片顺序乱掉的处理方法
上传后,图片的顺序和预期的不一致,需要修改ueditor的源码. 一.找到editor/dialogs/attachment/attachment.js文件 1.将_this.fileList.pus ...
- bootstrap-fileinput上传文件的插件使用总结----编辑已成功上传过的图片
http://plugins.krajee.com/file-plugin-methods-demo 具体操作 http://plugins.krajee.com/file-preview-manag ...
- 上传自动显示图片 代码
<html> <head> <title>上传自动显示图片</title> <script type="text/javas ...
- php上传图片限制类型,php,_使用php的图片上传类进行图片上传,总是提示:上传文件时出错 : 未允许类型 。都是默认的配置,php - phpStudy...
使用php的图片上传类进行图片上传,总是提示:上传文件时出错 : 未允许类型 .都是默认的配置 使用php的图片上传类进行图片上传,总是提示:上传文件时出错 : 未允许类型 .都是默认的配置 $upl ...
- 通过Web Services上传和下载图片文件
通过Web Services上传和下载图片文件 随着Internet技术的发展和跨平台需求的日益增加,Web Services的应用越来越广,我们不但需要通过Web Services传递字符串信息,而 ...
最新文章
- 不该建索引及不走索引的原因
- Go语言封装Http协议GET和POST请求
- ubuntu 14.04
- How to suppress email sending when operating on Activity
- 【渝粤教育】国家开放大学2019年春季 0691-22T物理化学及实验 参考试题
- 在VI中删除行尾的换行符
- 22岁大学生获谷歌天价offer,击败6000人年薪百万
- javascript经典实例_一道前端经常忽视的JavaScript面试题
- simulink模块使用记录2-EnabledSubsystem/merge
- 如何设置jquery的ajax方法为同步
- mysql io队列_网易视频云经验分享MYSQL 5.5 的IO控制
- linux禁用scp命令,Linux系统如何关闭scp和sftp命令
- 蚂蚁金服 Service Mesh 渐进式迁移方案|Service Mesh Meetup 实录
- 基于大数据的软件智能化开发方法与环境
- 使用ildasm获取源代码_有什么比ILDasm好? ILSpy和dnSpy是反编译.NET代码的工具
- hightopo学习笔记---入门
- 51单片机学习:蜂鸣器实验
- NB-IOT相关的术语 SGW、PGW、LTE、RRC、E-UTRAN、EPC
- 安装molten教程
- centos7根分区扩容(适用目前主流版本)
热门文章
- VTK学习之激光点云动态库封装(排水管道)
- Win10家庭版使用gpedit.msc方法
- 51花样流水灯c语言程序,51单片机花样流水灯程序
- Mipmap与纹理过滤
- eclipse、myeclipse大代码格式化 (自动对齐) 功能,太长的行会被强制换行
- aamp;m大学计算机科学,斑马博士捷报|德克萨斯AM大学 (TAMU) MSc Computer Science录取!...
- win10开启无线网卡服务器,Win10笔记本电脑无线网卡 教你如何开启Win10笔记本内置无线网卡...
- 树莓派 linux安装中文语言包6,树莓派安装XBMC并让其支持中文,
- CRAPS又称花旗骰,是美国拉斯维加斯非常受欢迎的一种的桌上赌博游戏。该游戏使用两粒骰子,玩家通过摇两粒骰子得出的点数进行游戏。
- 什么是SYN包 以及SYN攻击原理