笔者在设计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中图片实现等比例不失真缩放相关推荐

  1. android百度地图覆盖物异步加载图片,Android 百度地图marker中图片不显示的解决方法(推荐)...

    目的: 根据提供的多个经纬度,显示所在地的marker样式,如下: 问题: 1.发现marker中在线加载的图片无法显示出来: 2.获取多个对象后,却只显示出了一个marker: 以下为官网实现方法: ...

  2. div图片垂直居中 如何使div中图片垂直居中

    div相对与table对于图片的垂直居中支持的并不好,特别对于不同浏览器的兼容性来说,这里我们看下一个简洁的css解决方法:  在曾经的 淘宝UED 招聘 中有这样一道题目: "使用纯CSS ...

  3. c#图片base64去转义字符_c#中图片与base64互相转换

    本教程说明如何在C#.NET Windows Forms Application中将图像转换为base64字符串,以及将base64字符串转换为图像. 您可以创建一个新的Windows窗体应用程序项目 ...

  4. 图片隐写 安恒ctf_图片隐写 安恒ctf_CTF中图片隐写的一些整理总结

    对历年来国内外CTF中常见的题型图片隐写的一些总结,本文长期更新,及时补充新的题型. 对历年来国内外CTF中常见的题型图片隐写的一些总结 赛题 XMAN-qualifiers-2017 : Misc/ ...

  5. 图片隐写 安恒ctf_CTF中图片隐写的一些整理总结

    对历年来国内外CTF中常见的题型图片隐写的一些总结,本文长期更新,及时补充新的题型. 对历年来国内外CTF中常见的题型图片隐写的一些总结 赛题 XMAN-qualifiers-2017 : Misc/ ...

  6. php中怎么让图片没有缓存,关于项目中图片缓存的问题

    之前用的是iis所以可能没有这些问题,后来换了nginx之后发现图片缓存问题很严重,本项目用的是thinkphp5框架: 浏览器.runtime.session.cookie.加参数,后台,所有缓存都 ...

  7. java图片叠加_[原创]JAVA中图片上叠加文字的方法

    --sunfruit JDK:1.3.x以上 功能:下面是一个简单在图片上面叠加文字的方法,有朋友如果有这方面的问题,就起个了解的作用 代码如下: import java.io.IOException ...

  8. yy 服务器维护中 图片无法显示,解决简书图片不显示问题“系统维护中,图片暂时无法加载”...

    天突然发现之前的文章图片全部都这样了,我还以为图片丢了! 9949918-5bfb96c2b65b9c7e.png 但是其实图片还是可以访问的 配合 Chrome,Safari 扩展程序 Tamper ...

  9. 图片缩小不失真_科技论文中图片的处理方法有哪些?

    来源丨斐然智达SCI学术服务 有位论文审稿人在自己的博文中写道:"我审稿时看稿件的顺序是题目.摘要.图表. 前言.参考文献和正文".可见论文中图片的质量是非常重要的,图片质量的好坏 ...

最新文章

  1. 3个步骤,让你的手机上网速度飙升--转载
  2. AspectJ的注解开发AOP:异常抛出通知的学习
  3. Photoshop激活教程
  4. 深入理解 Java内存模型
  5. 安卓惯性传感器(二)
  6. 程序间数据共享与传递(3):EXPORT/IMPORT、SAP/ABAP Memory
  7. 设计模式之facade模式
  8. 4 开发MapReduce应用程序
  9. Angular4 存储访问路由栈信息
  10. laravel 先排序后分组怎么写_希尔排序算法拆解解析
  11. Chrome浏览器最新版驱动包下载
  12. 利用键盘钩子捕捉linux键盘动作,利用键盘钩子捕获Windows键盘动作
  13. Qt Creator-设置代码的背景色和字体
  14. Android Wifi密码查看器实现思路
  15. windows bat系列9:for处理案例三 单行按指定分隔符分割
  16. vue 符号..._如何在Windows 8.1上输入和使用表情符号
  17. Eginx配置(SSL,令牌登录认证,IP白名单,代理转发)
  18. 计算机考研资料库!近五十所高校计算机考研资料分享!持续更新中!
  19. 魔术的逻辑(三)——明明是假的,但为何奇迹依旧美妙?
  20. harness记忆_Java Microbenchmarking Harness的动手实践

热门文章

  1. Python Matplotlib库绘制曲线图 最快入门教程(最详细最简单)
  2. QHash 与 QMap的区别
  3. matlab 多通滤波,带通滤波 matlab
  4. html div 正方形,纯 CSS 实现自适应正方形
  5. ARM Context synchronization event和Instruction Synchronization Barrier
  6. unity 中2d游戏游戏角色与场景物体层级关系问题解决
  7. php二进制转文本文件,php实现二进制和文本相互转换的方法
  8. 将PHP开发的网站分布式部署,如何进行分布式部署
  9. 【THINKPAD X240Intel Management Engine9.5升级10.0失败解决方案】
  10. java action下载文件,DownloadAction下载文件,该如何解决