PHP图片等比缩放和增加Logo水印代码详解和注释

//PHP图片的等比缩放和增加Logo水印

/**

* 等比缩放函数(以保存的方式实现)

* @param string $picName 被缩放的处理图片源

* @param int $maxx 缩放后图片的最大宽度

* @param int $maxy 缩放后图片的最大高度

* @param string $pre 缩放后图片名的前缀名

* @return String 返回后的图片名称(带路径),如a.jpg=>s_a.jpg

*/

function imageNewageUpdateSize($picName,$maxx=100,$maxy=100,$pre="s_"){

$imageNewageInfo = getimageNewageSize($picName); //获取图片的基本信息

$w = $imageNewageInfo[0];//获取宽度

$h = $imageNewageInfo[1];//获取高度

//获取图片的类型并为此创建对应图片资源

switch($imageNewageInfo[2]){

case 1: //gif

$imageNew = imageNewagecreatefromgif($picName);

break;

case 2: //jpg

$imageNew = imageNewagecreatefromjpeg($picName);

break;

case 3: //png

$imageNew = imageNewagecreatefrompng($picName);

break;

default:

die("图片类型错误!");

}

//计算缩放比例

if(($maxx/$w)>($maxy/$h)){

$b = $maxy/$h;

}else{

$b = $maxx/$w;

}

//计算出缩放后的尺寸

$nw = floor($w*$b);

$nh = floor($h*$b);

//创建一个新的图像源(目标图像)

$nimageNew = imageNewagecreatetruecolor($nw,$nh);

//执行等比缩放

imageNewagecopyresampled($nimageNew,$imageNew,0,0,0,0,$nw,$nh,$w,$h);

//输出图像(根据源图像的类型,输出为对应的类型)

$picimageNewageInfo = pathimageNewageInfo($picName);//解析源图像的名字和路径信息

$newpicName= $picimageNewageInfo["dirname"]."/".$pre.$picimageNewageInfo["basename"];

switch($imageNewageInfo[2]){

case 1:

imageNewagegif($nimageNew,$newpicName);

break;

case 2:

imageNewagejpeg($nimageNew,$newpicName);

break;

case 3:

imageNewagepng($nimageNew,$newpicName);

break;

}

//释放图片资源

imageNewagedestroy($imageNew);

imageNewagedestroy($nimageNew);

//返回结果

return $newpicName;

}

//调用

echo imageNewageUpdateSize("./imageNewages/leyangjun.jpg",400,400,"ss_"); //你自己要添加的图片

/**

* 为一张图片添加上一个logo图片水印(以保存的方式实现)

* @param string $picName 被处理图片源

* @param string $logo 水印图片

* @param string $pre 处理后图片名的前缀名

* @return String 返回后的图片名称(带路径),如a.jpg=>n_a.jpg

*/

function imageNewageUpdateLogo($picName,$logo,$pre="n_"){

$picNameimageNewageInfo = getimageNewageSize($picName); //获取图片源的基本信息

$logoimageNewageInfo = getimageNewageSize($logo); //获取logo图片的基本信息

//var_dump($logoimageNewageInfo);

//根据图片类型创建出对应的图片源

switch($picNameimageNewageInfo[2]){

case 1: //gif

$imageNew = imageNewagecreatefromgif($picName);

break;

case 2: //jpg

$imageNew = imageNewagecreatefromjpeg($picName);

break;

case 3: //png

$imageNew = imageNewagecreatefrompng($picName);

break;

default:

die("图片类型错误!");

}

//根据logo图片类型创建出对应的图片源

switch($logoimageNewageInfo[2]){

case 1: //gif

$logoimageNew = imageNewagecreatefromgif($logo);

break;

case 2: //jpg

$logoimageNew = imageNewagecreatefromjpeg($logo);

break;

case 3: //png

$logoimageNew = imageNewagecreatefrompng($logo);

break;

default:

die("logo图片类型错误!");

}

//执行图片水印处理 源图的高-logo图的高 源图的宽-logo图的宽

imageNewagecopyresampled($imageNew,$logoimageNew,$picNameimageNewageInfo[0]-$logoimageNewageInfo[0],$picNameimageNewageInfo[1]-$logoimageNewageInfo[1],0,0,$logoimageNewageInfo[0],$logoimageNewageInfo[1],$logoimageNewageInfo[0],$logoimageNewageInfo[1]);

//输出图像(根据源图像的类型,输出为对应的类型)

$picimageNewageInfo = pathimageNewageInfo($picName);//解析源图像的名字和路径信息

$newpicName= $picimageNewageInfo["dirname"]."/".$pre.$picimageNewageInfo["basename"];

switch($picNameimageNewageInfo[2]){

case 1:

imageNewagegif($imageNew,$newpicName);

break;

case 2:

imageNewagejpeg($imageNew,$newpicName);

break;

case 3:

imageNewagepng($imageNew,$newpicName);

break;

}

//释放图片资源

imageNewagedestroy($imageNew);

imageNewagedestroy($logoimageNew);

//返回结果

return $newpicName;

}

//测试

//echo imageNewageUpdateLogo("./imageNewages/leyangjun.jpg","./imageNewages/logo.png"); //对应添加你的图片,和你的logo水印图片 OK

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

php增加logo,PHP图片等比缩放和增加Logo水印代码详解和注释相关推荐

  1. python使用视频_Python中操作各种多媒体,视频、音频到图片的代码详解

    我们经常会遇到一些对于多媒体文件修改的操作,像是对视频文件的操作:视频剪辑.字幕编辑.分离音频.视频音频混流等.又比如对音频文件的操作:音频剪辑,音频格式转换.再比如我们最常用的图片文件,格式转换.各 ...

  2. python播放视频代码_Python中操作各种多媒体,视频、音频到图片的代码详解

    我们经常会遇到一些对于多媒体文件修改的操作,像是对视频文件的操作:视频剪辑.字幕编辑.分离音频.视频音频混流等.又比如对音频文件的操作:音频剪辑,音频格式转换.再比如我们最常用的图片文件,格式转换.各 ...

  3. Android复习14【高级编程:推荐网址、抠图片上的某一角下来、Bitmap引起的OOM问题、三个绘图工具类详解、画线条、Canvas API详解(平移、旋转、缩放、倾斜)、矩阵详解】

    目   录 推荐网址 抠图片上的某一角下来 8.2.2 Bitmap引起的OOM问题 8.3.1 三个绘图工具类详解 画线条 8.3.16 Canvas API详解(Part 1) 1.transla ...

  4. nmmqq.php?/lspc.html,html中的图片直接使用base64编码后的字符串代替详解

    网页中的图片是使用base64编码后的字符串代替了,这个叫做Data URI scheme,下面有个不错的示例,大家可以参考下 最近来了一个网页,里面有图片,但是却没有引用外部的图片资源,很好奇.查看 ...

  5. JavaGUI 简易贪吃蛇代码详解+图片素材

    简易贪吃蛇 运行截图 图片素材 代码详解 package com.du.snake; import javax.swing.*; import java.awt.*; import java.awt. ...

  6. php 显示要上传的图片格式,php判断文件上传图片格式的实例详解

    php判断文件上传图片格式的实例详解 判断文件图片类型, $type = $_FILES['image']['tmp_name'];//文件名 //$type = $this->getImage ...

  7. php android 图片上传,android上传图片到PHP的过程详解

    这篇文章主要介绍了android上传图片到PHP的过程详解,需要的朋友可以参考下 今天在做上传头像的时候,总是提交连接超时错误,报错信息如下:XXXXXXSokcetTimeOutXXXXXXXX 然 ...

  8. python代码图片头像_Flask 上传自定义头像的实例详解

    Flask Web 开发这本书基本上做完了,后面还需要温习,但是自己做的博客总觉得简陋了点,所以,在动脑子开发新功能 今天想到最基本的功能,自定义头像 那这样的功能,设计到2大基本功能块 1:如何进行 ...

  9. android 图片浏览器旋转,OpenGL纹理旋转及翻转问题详解

    大家好,我是程序员kenney,今天给大家讲解一下Android上OpenGL开发可能会遇到的一些纹理旋转及翻转的问题,其中有些原理在其它平台上如ios,osx上也是类似的.纹理旋转的问题一定要搞清楚 ...

最新文章

  1. Js+Dhtml:WEB程序员简易开发工具包(预先体验版)
  2. 数据结构中等号表示什么_通过分析2016年最重要的252个中等故事我学到了什么...
  3. Streaming源码解读之接收流数据的全生命周期
  4. gpu装linux系统显示黑屏,linux操作系统安装gpu版本的paddlepaddle出现问题
  5. 重温java中的String,StringBuffer,StringBuilder类
  6. 写论文时的一些高大上词句
  7. 【华为云技术分享】云小课 | 灵活配置权限,满足存储安全(OBS权限管理介绍上篇)
  8. 2.导数——线性代数回顾、曲线概念_1
  9. 列表(添加、修改、查、删除)
  10. 回归分析beta值的标准_学好这20%,就能解决80%的数据分析问题 | 数据产品经理必看...
  11. JavaScript 的 async/await 理解(4)
  12. 视频播放器+控制器--封装
  13. python opencv 找到圆点标定板所有点后通过距离找四个角点
  14. java全世界各国城市地址解析
  15. 雨滴式的显示图片 (cloud 转贴) (转)
  16. uni-app前端解密微信小程序手机号加密数据
  17. android实现开机自动运行程序,Android编程实现应用程序开机自启动的方法
  18. 岗位:python后端工程师
  19. 用html写箭头的原理,5个编写高质量箭头函数的最佳实践
  20. matlab使用hough变换函数进行车道检测

热门文章

  1. 一文了解Gauss数据库:开发历程、OLTPOLAP特点、行式列式存储,及与Oracle和AWS对比
  2. 蓝牙耳机哪个牌子好?数码博主盘点口碑蓝牙耳机品牌
  3. java cxf soapheader_CXF 中自定义SOAPHeader
  4. 运筹学-单纯形法-代码实现(包含做题的每一步骤)
  5. 网络配置:vlan配置
  6. 大学计算机入门基础知识论文,关于大学计算机基础论文.docx
  7. docker+jenkins构建vue项目
  8. html5网页制作测试题,Dreamweaver CS5网页制作期末测试题
  9. Excel催化剂开源第15波-VSTO开发之DataTable数据导出至单元格区域
  10. Winform中DataGridview的基本用法