php图片比例不失真,PHP中图片实现等比例不失真缩放
笔者在设计http://www.cityxii.cn的主页过程中,有遇到图片缩放问题。由于页面的图片是从论坛里面抽取,而用户在论坛里面所发图片大小不一,展示出来难免会要变形。
http://www.cityxii.cn的主页使用的是SUPESITE7.0,论坛使用discuz7。笔者在这里先把思路理一理:
首先,PHP支持图片的创建、修改。不过依赖GD库。
其次,如何调用PHP图片缩放函数。这里笔者采用GET方法传递参数给图片缩放的代码文件。
下面笔者先把PHP图片缩放的代码贴出来,然后根据代码解释编写思路。
1: $imgpath=$_GET['img'];
2: if ($_GET['w'] != '' && $_GET['h'] != ''){
3: $initWidth = $_GET['w'];
4: $initHeight = $_GET['h'];
5: }else{
6: $initWidth = 340;
7: $initHeight = 270;
8: }
9: if(strpos($imgpath,'thumb.jpg')){
10: $imgpath = substr($imgpath,0,-10);
11: }
12:
13:
14: $im = @imagecreatefromjpeg($imgpath);
15: $imgSize = GetImageSize($imgpath);
16: $imgWidth = $imgSize[0];
17: $imgHeight = $imgSize[1];
18: $proportion = max($initWidth/$imgWidth,$initHeight/$imgHeight);
19: $newImgWidth = $imgWidth*$proportion;
20: $newImgHeight = $imgHeight*$proportion;
21: $tmpImg = imagecreatetruecolor($newImgWidth,$newImgHeight);
22: imagecopyresized($tmpImg, $im, 0, 0, 0, 0, $newImgWidth, $newImgHeight, $imgWidth, $imgHeight);
23:
24: $thumb = imagecreatetruecolor($initWidth, $initHeight);
25: $diffWidth = $newImgWidth > $initWidth ? $newImgWidth - $initWidth : $initWidth - $newImgWidth;
26: $diffHeight = $newImgHeight > $initHeight ? $newImgHeight - $initHeight : $initHeight - $newImgHeight;
27:
28: $x = $diffWidth/2;
29: //$y = $diffHeight/3;
30: $y = 0;
31:
32: imagecopy($thumb, $tmpImg, 0, 0, $x, $y, $initWidth, $initHeight);
33:
34: header('Content-type:image/jpeg');
35: // Output
36: imagejpeg($thumb);
37: ImageDestroy($thumb);
解释一下以上代码。
1. 获得图片的URL,以及最终高宽。
2. line 9 是抽取UCHOME的相册图片,所需的修改。系统默认抽取相册图片本来就是缩略图,也就是以thumb.jpg结尾的图片,过滤掉。
3. line 14~17 导入并获得图片的宽高,line 18~22 计算缩放比例。依最大缩放比例修改原始图片。
4. line 24 后面就是把第3步缩放的图片,COPY到最终宽高图片。
然后,笔者把调用代码给出,以供参考。
1:
php图片比例不失真,PHP中图片实现等比例不失真缩放相关推荐
- android百度地图覆盖物异步加载图片,Android 百度地图marker中图片不显示的解决方法(推荐)...
目的: 根据提供的多个经纬度,显示所在地的marker样式,如下: 问题: 1.发现marker中在线加载的图片无法显示出来: 2.获取多个对象后,却只显示出了一个marker: 以下为官网实现方法: ...
- div图片垂直居中 如何使div中图片垂直居中
div相对与table对于图片的垂直居中支持的并不好,特别对于不同浏览器的兼容性来说,这里我们看下一个简洁的css解决方法: 在曾经的 淘宝UED 招聘 中有这样一道题目: "使用纯CSS ...
- c#图片base64去转义字符_c#中图片与base64互相转换
本教程说明如何在C#.NET Windows Forms Application中将图像转换为base64字符串,以及将base64字符串转换为图像. 您可以创建一个新的Windows窗体应用程序项目 ...
- 图片隐写 安恒ctf_图片隐写 安恒ctf_CTF中图片隐写的一些整理总结
对历年来国内外CTF中常见的题型图片隐写的一些总结,本文长期更新,及时补充新的题型. 对历年来国内外CTF中常见的题型图片隐写的一些总结 赛题 XMAN-qualifiers-2017 : Misc/ ...
- 图片隐写 安恒ctf_CTF中图片隐写的一些整理总结
对历年来国内外CTF中常见的题型图片隐写的一些总结,本文长期更新,及时补充新的题型. 对历年来国内外CTF中常见的题型图片隐写的一些总结 赛题 XMAN-qualifiers-2017 : Misc/ ...
- php中怎么让图片没有缓存,关于项目中图片缓存的问题
之前用的是iis所以可能没有这些问题,后来换了nginx之后发现图片缓存问题很严重,本项目用的是thinkphp5框架: 浏览器.runtime.session.cookie.加参数,后台,所有缓存都 ...
- java图片叠加_[原创]JAVA中图片上叠加文字的方法
--sunfruit JDK:1.3.x以上 功能:下面是一个简单在图片上面叠加文字的方法,有朋友如果有这方面的问题,就起个了解的作用 代码如下: import java.io.IOException ...
- yy 服务器维护中 图片无法显示,解决简书图片不显示问题“系统维护中,图片暂时无法加载”...
天突然发现之前的文章图片全部都这样了,我还以为图片丢了! 9949918-5bfb96c2b65b9c7e.png 但是其实图片还是可以访问的 配合 Chrome,Safari 扩展程序 Tamper ...
- 图片缩小不失真_科技论文中图片的处理方法有哪些?
来源丨斐然智达SCI学术服务 有位论文审稿人在自己的博文中写道:"我审稿时看稿件的顺序是题目.摘要.图表. 前言.参考文献和正文".可见论文中图片的质量是非常重要的,图片质量的好坏 ...
最新文章
- 3个步骤,让你的手机上网速度飙升--转载
- AspectJ的注解开发AOP:异常抛出通知的学习
- Photoshop激活教程
- 深入理解 Java内存模型
- 安卓惯性传感器(二)
- 程序间数据共享与传递(3):EXPORT/IMPORT、SAP/ABAP Memory
- 设计模式之facade模式
- 4 开发MapReduce应用程序
- Angular4 存储访问路由栈信息
- laravel 先排序后分组怎么写_希尔排序算法拆解解析
- Chrome浏览器最新版驱动包下载
- 利用键盘钩子捕捉linux键盘动作,利用键盘钩子捕获Windows键盘动作
- Qt Creator-设置代码的背景色和字体
- Android Wifi密码查看器实现思路
- windows bat系列9:for处理案例三 单行按指定分隔符分割
- vue 符号..._如何在Windows 8.1上输入和使用表情符号
- Eginx配置(SSL,令牌登录认证,IP白名单,代理转发)
- 计算机考研资料库!近五十所高校计算机考研资料分享!持续更新中!
- 魔术的逻辑(三)——明明是假的,但为何奇迹依旧美妙?
- harness记忆_Java Microbenchmarking Harness的动手实践
热门文章
- Python Matplotlib库绘制曲线图 最快入门教程(最详细最简单)
- QHash 与 QMap的区别
- matlab 多通滤波,带通滤波 matlab
- html div 正方形,纯 CSS 实现自适应正方形
- ARM Context synchronization event和Instruction Synchronization Barrier
- unity 中2d游戏游戏角色与场景物体层级关系问题解决
- php二进制转文本文件,php实现二进制和文本相互转换的方法
- 将PHP开发的网站分布式部署,如何进行分布式部署
- 【THINKPAD X240Intel Management Engine9.5升级10.0失败解决方案】
- java action下载文件,DownloadAction下载文件,该如何解决