网站上传图片后生成缩略图应该是非常常用的功能了,通常来讲为了网站显示美观,缩略图会是同样尺寸,比如最近笔者做的一个站点,缩略图规格要求都是160×120。但是如果上传的图片比例和缩略图不一致,直接缩放的话就会导致图片变形,这样体验肯定就不好了。于是笔者想了一个折中的办法,就是缩小后添加白边的方法。

源图,尺寸是600×366:

最终生成的效果图:

代码相对比较长些,下面简单说下思路:

先将源图按比例生成缩略图,并且宽不大于160、高不大于120。例如上图会先生成160×98的缩略图。

新建一个160×120的白色背景图片,将上一步生成的缩略图居中放置到这张图片上就OK了。

最终代码如下:

代码如下:

//源图的路径,可以是本地文件,也可以是远程图片

$src_path = '1.jpg';

//最终保存图片的宽

$width = 160;

//最终保存图片的高

$height = 120;

//源图对象

$src_image = imagecreatefromstring(file_get_contents($src_path));

$src_width = imagesx($src_image);

$src_height = imagesy($src_image);

//生成等比例的缩略图

$tmp_image_width = 0;

$tmp_image_height = 0;

if ($src_width / $src_height >= $width / $height) {

$tmp_image_width = $width;

$tmp_image_height = round($tmp_image_width * $src_height / $src_width);

} else {

$tmp_image_height = $height;

$tmp_image_width = round($tmp_image_height * $src_width / $src_height);

}

$tmpImage = imagecreatetruecolor($tmp_image_width, $tmp_image_height);

imagecopyresampled($tmpImage, $src_image, 0, 0, 0, 0, $tmp_image_width, $tmp_image_height, $src_width, $src_height);

//添加白边

$final_image = imagecreatetruecolor($width, $height);

$color = imagecolorallocate($final_image, 255, 255, 255);

imagefill($final_image, 0, 0, $color);

$x = round(($width - $tmp_image_width) / 2);

$y = round(($height - $tmp_image_height) / 2);

imagecopy($final_image, $tmpImage, $x, $y, 0, 0, $tmp_image_width, $tmp_image_height);

//输出图片

header('Content-Type: image/jpeg');

imagejpeg($final_image);

http://www.bkjia.com/PHPjc/621663.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/621663.htmlTechArticle网站上传图片后生成缩略图应该是非常常用的功能了,通常来讲为了网站显示美观,缩略图会是同样尺寸,比如最近笔者做的一个站点,缩...

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

php生成缩略图填充白,php生成缩略图填充白边(等比缩略图方案)_PHP教程相关推荐

  1. 帝国cms缩略图:网站不同地方生成不同的缩略图

    方便网站多地方调用不同尺寸的缩略图. 根据图片源,在网站任意位置生成不同大小的缩略图. 以灵动标签为例. 以往写标题图片为 [e:loop={栏目ID/专题ID,显示条数,操作类型,只显示有标题图片, ...

  2. java 上传图片 生成缩略图_将图片生成缩略图Java代码实现

    在工作中经常会遇到图片处理相关的需求,比如说一些图片网站只展示相关的缩略图,而真实的图片可能很大而不是直接展示.所以就需要在上传相关的图片后直接对图片进行处理生成相关的缩略图.实现代码如下: impo ...

  3. php excel 模板,PHP以Excel模板填充数据并生成新的Excel文件

    遇到这个一个问题,需要生成带水印的Excel文件,具体思路如下:先设置一个调好格式的Excel文件作为模板,再用PHP以模板文件填充,并生成新的Excel文件,这样新的文件就和模板文件格式一致.程序用 ...

  4. latex自动生成中文目录_自动生成工作表目录三种方法,看哪种适合你?

    如果在一个工作簿内有很多工作表需要去维护管理,一个个的查找显然是很麻烦的,建立一个工作表的导航目录无疑是最便捷的方法. 下面介绍三种生成工作表目录的方法: 一.利用宏表函数生成可导航目录 第1步:定义 ...

  5. java 唯一id生成算法_唯一ID生成算法剖析

    在业务开发中,大量场景需要唯一ID来进行标识:用户需要唯一身份标识:商品需要唯一标识:消息需要唯一标识:事件需要唯一标识-等等,都需要全局唯一ID,尤其是分布式场景下. 唯一ID有哪些特性或者说要求呢 ...

  6. 任意线段集生成多边形_self-attention缺失文本生成||Text Infilling

    摘要 近年来,文本生成在不同的环境中取得了显著的进展,例如从零开始生成文本以及正在出现的恢复和重写的方式.填充句子或段落中缺失的文本部分的文本填充技术在现实生活中也有很多用途,但还没有得到充分的探索. ...

  7. 银联生成ARQC,ARPC,MAC,CVN生成

    针对银联生成ARQC,ARPC,还有MAC进行了软加密实现,一般的银行都是进行调用加密机实现,为了方便测试使用自己对其进行了软加密算法实现: 基本帮助类如下: package com.omini.co ...

  8. 如何把wps随机数据固定_wps随机生成数据 wps表格怎么生成随机数 - 办公软件 - 服务器之家...

    wps随机生成数据 wps表格怎么生成随机数 发布时间:2017-05-19 来源:服务器之家 学习啦小编在这里为大家讲解WPS表格公式生成不重复随机整数 方法一涉及主要知识:RAND函数.RANK函 ...

  9. 对抗生成网络_深度卷积生成对抗网络

    本教程演示了如何使用深度卷积生成对抗网络(DCGAN)生成手写数字图片.该代码是使用 Keras Sequential API 与 tf.GradientTape 训练循环编写的. 什么是生成对抗网络 ...

最新文章

  1. mysql 触发器判断不插入数据_mysql关于触发器怎么判断数据存在时更新不存在时添加呢!...
  2. HDU - 2457 DNA repair(AC自动机+dp)
  3. Solr操作中新手常见问题
  4. SPI接口比IIC速度快的理解
  5. JS节点树的一个实例
  6. MySQL5.7报错[ERROR] Unix socket lock file is empty /tmp/mysql.sock.lock的解决方法
  7. .NET中异常类(Exception)
  8. C++ Primer 读书笔记 - 第二章
  9. PXE+kickstart 无人值守安装CentOS 6
  10. PXE+kickstart——实现网络批量装机
  11. CentOS7使用MySQL5.7.16安装
  12. k-means聚类算法原理简析
  13. 盲盒小程序源码下载、附赠完整图片素材源码
  14. python arduino小车,搭建ROS小车底盘-第六篇ros_arduino_bridge功能包的使用
  15. iPhone 计算机 桌面,变身iOS?让Windows 10的桌面和苹果一样美
  16. Java加密技术(四)——非对称加密算法RSA
  17. 基于蜂群对花蜜需求所做的数量模型构建及分析
  18. Javascript:ES6-ES11(1)
  19. MacOS系统下 adb 调试电视相关(homebrew安装 adb)
  20. 动听的“教育之歌”,消费金融们的演奏响而不悦耳

热门文章

  1. 常见图片格式:PNG,JPG/JPEG,BMP
  2. python模块化编程_什么是模块,Python模块化编程(入门必读)
  3. python 预测 位置_Python:核岭回归预测,KRR
  4. clickhouse原理解析与应用实践 pdf_阿里专家分享内部绝密RocketMQ核心原理与最佳实践PDF...
  5. 数学打比方(函数和卷积)
  6. java选择排序算法实现
  7. SQLyog创建表示的bug
  8. python保存数据db_python存储数据到mongodb
  9. php获取pid,在Shell脚本中获取指定进程的PID
  10. Leecode刷题热题HOT100(9)——回文数