本文实例讲述了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水印功能示例相关推荐

  1. dropzonejs中文翻译手册 DropzoneJS是一个提供文件拖拽上传并且提供图片预览的开源类库....

    http://wxb.github.io/dropzonejs.com.zh-CN/dropzonezh-CN/ 由于项目需要,完成一个web的图片拖拽上传,也就顺便学习和了解了一下前端的比较新的技术 ...

  2. svg上传服务器无法显示,让WordPress支持上传SVG格式图片并显示在媒体库中的方法...

    让WordPress支持上传SVG格式图片并显示在媒体库中的方法 发布时间:2020-12-11 14:18:12 来源:亿速云 阅读:167 作者:小新 这篇文章将为大家详细讲解有关让WordPre ...

  3. html5 图片上传,支持图片预览、压缩、及进度显示,兼容IE6+及标准浏览器

    原文:html5 图片上传,支持图片预览.压缩.及进度显示,兼容IE6+及标准浏览器 以前写过上传组件,见 打造 html5 文件上传组件,实现进度显示及拖拽上传,兼容IE6+及其它标准浏览器,对付一 ...

  4. vue-quill-editor上传内容由于图片是base64的导致字符太长的问题解决

    vue-quill-editor上传内容由于图片是base64的导致字符太长的问题解决 参考文章: (1)vue-quill-editor上传内容由于图片是base64的导致字符太长的问题解决 (2) ...

  5. linux禁止客户端上传文件_图片/文件上传如此简单|macOS 图床客户端 uPic

    前言 相信很多人在写作(特别是需要多平台发布)的时候都会因为插图而增加工作量: 平台图片外链不允许在网站外部访问. 使用云图床服务上传流程复杂. 那么这些问题有没有办法解决呢,答案肯定是"有 ...

  6. ueditor百度编辑器中,多图上传后,图片顺序乱掉的处理方法

    上传后,图片的顺序和预期的不一致,需要修改ueditor的源码. 一.找到editor/dialogs/attachment/attachment.js文件 1.将_this.fileList.pus ...

  7. bootstrap-fileinput上传文件的插件使用总结----编辑已成功上传过的图片

    http://plugins.krajee.com/file-plugin-methods-demo 具体操作 http://plugins.krajee.com/file-preview-manag ...

  8. 上传自动显示图片 代码

    <html>  <head>   <title>上传自动显示图片</title>    <script type="text/javas ...

  9. php上传图片限制类型,php,_使用php的图片上传类进行图片上传,总是提示:上传文件时出错 : 未允许类型 。都是默认的配置,php - phpStudy...

    使用php的图片上传类进行图片上传,总是提示:上传文件时出错 : 未允许类型 .都是默认的配置 使用php的图片上传类进行图片上传,总是提示:上传文件时出错 : 未允许类型 .都是默认的配置 $upl ...

  10. 通过Web Services上传和下载图片文件

    通过Web Services上传和下载图片文件 随着Internet技术的发展和跨平台需求的日益增加,Web Services的应用越来越广,我们不但需要通过Web Services传递字符串信息,而 ...

最新文章

  1. 不该建索引及不走索引的原因
  2. Go语言封装Http协议GET和POST请求
  3. ubuntu 14.04
  4. How to suppress email sending when operating on Activity
  5. 【渝粤教育】国家开放大学2019年春季 0691-22T物理化学及实验 参考试题
  6. 在VI中删除行尾的换行符
  7. 22岁大学生获谷歌天价offer,击败6000人年薪百万
  8. javascript经典实例_一道前端经常忽视的JavaScript面试题
  9. simulink模块使用记录2-EnabledSubsystem/merge
  10. 如何设置jquery的ajax方法为同步
  11. mysql io队列_网易视频云经验分享MYSQL 5.5 的IO控制
  12. linux禁用scp命令,Linux系统如何关闭scp和sftp命令
  13. 蚂蚁金服 Service Mesh 渐进式迁移方案|Service Mesh Meetup 实录
  14. 基于大数据的软件智能化开发方法与环境
  15. 使用ildasm获取源代码_有什么比ILDasm好? ILSpy和dnSpy是反编译.NET代码的工具
  16. hightopo学习笔记---入门
  17. 51单片机学习:蜂鸣器实验
  18. NB-IOT相关的术语 SGW、PGW、LTE、RRC、E-UTRAN、EPC
  19. 安装molten教程
  20. centos7根分区扩容(适用目前主流版本)

热门文章

  1. VTK学习之激光点云动态库封装(排水管道)
  2. Win10家庭版使用gpedit.msc方法
  3. 51花样流水灯c语言程序,51单片机花样流水灯程序
  4. Mipmap与纹理过滤
  5. eclipse、myeclipse大代码格式化 (自动对齐) 功能,太长的行会被强制换行
  6. aamp;m大学计算机科学,斑马博士捷报|德克萨斯AM大学 (TAMU) MSc Computer Science录取!...
  7. win10开启无线网卡服务器,Win10笔记本电脑无线网卡 教你如何开启Win10笔记本内置无线网卡...
  8. 树莓派 linux安装中文语言包6,树莓派安装XBMC并让其支持中文,
  9. CRAPS又称花旗骰,是美国拉斯维加斯非常受欢迎的一种的桌上赌博游戏。该游戏使用两粒骰子,玩家通过摇两粒骰子得出的点数进行游戏。
  10. 什么是SYN包 以及SYN攻击原理