今天看到这篇文章想我想到了几年前帮助一个客户做一个网站,那种要求里面就有一个宽度不足够时需要自动给图片生成白边了,下面我看到一个不错的例子整理一下给各位。

网站上传图片后生成缩略图应该是非常常用的功能了,通常来讲为了网站显示美观,缩略图会是同样尺寸,比如最近笔者做的一个站点,缩略图规格要求都是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);

php裁剪图片白边,php生成缩略图自动填充白边例子相关推荐

  1. php 二维码白边,php生成缩略图自动填充白边例子

    今天看到这篇文章想我想到了几年前帮助一个客户做一个网站,那种要求里面就有一个宽度不足够时需要自动给图片生成白边了,下面我看到一个不错的例子整理一下给各位. 网站上传图片后生成缩略图应该是非常常用的功能 ...

  2. php裁剪图片白边,php生成缩略图填充白边(等比缩略图方案)

    网站上传图片后生成缩略图应该是非常常用的功能了,通常来讲为了网站显示美观,缩略图会是同样尺寸,比如最近笔者做的一个站点,缩略图规格要求都是160×120.但是如果上传的图片比例和缩略图不一致,直接缩放 ...

  3. php裁剪图片白边,php生成缩略图填充白边(等比缩略图方案)_PHP

    网站上传图片后生成缩略图应该是非常常用的功能了,通常来讲为了网站显示美观,缩略图会是同样尺寸,比如最近笔者做的一个站点,缩略图规格要求都是160×120.但是如果上传的图片比例和缩略图不一致,直接缩放 ...

  4. 如何使用Java快速地给图片转码和生成缩略图(Thumbnailator和webp-imageio-core的使用)

    文章简介 本文中介绍,如何使用Java优雅处理图片:包括:主流图片格式转码.图片压缩(缩略图生成)等.主要用到的外部工具包: Google Thumbnailator webp-imageio-cor ...

  5. php图片上传并生成缩略图

    在生成图片的缩略图,比如宽和高的比例时,可以自由修改.这个类可用于配合前段的iframe表单元素,生成无刷新的上传图片,并在前段指定区域立即显示的效果.其实还可以再加一个属性,把任何服务器错误都替换成 ...

  6. PDF及普通图片文件上传生成缩略图

    主要依赖 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</arti ...

  7. php 上传图片并生成缩略图,php 图片上传并生成缩略图代码

    本代码的功能是把你要上传的图片保存到服务器,然后再把当前图重按比例生成一个小的缩略图哦. if($_FILES['image']['size']){ if($_FILES['image']['type ...

  8. php裁剪图片圆角圆形,php生成圆角图片代码

    搜索热词 下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. $image_file = $_GET['src']; $corner_radi ...

  9. 计算摄影 | 计算机如何学会自动裁剪图片(自动构图)?

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 1 自动构图基础 1.1 什么是构图 自动裁剪用摄影的话语来说,就 ...

最新文章

  1. 2021-2027年中国手机天线行业竞争格局分析及发展趋势预测报告
  2. 如何将github上的 lib fork之后通过podfile 改变更新源到自己fork的地址
  3. QT的QDateTimeAxis类的使用
  4. TypeScript 的 Object Types
  5. Magento去除前台URL中显示的index.php
  6. date工具类 DateUtils.java
  7. 在Windows 7上安装ACE 6.1.0
  8. 【Java数据结构】赫夫曼树
  9. HTML5 之 FileReader(图片上传)
  10. RequestContextHolder 获取 ServletRequest 和 ServletResponse,Spring MVC ModelAndView 数据响应 Response
  11. 【HDOJ6071】Lazy Running(同余最短路思想)
  12. MSP430 F5529 单片机 OLED 音乐播放器 八音盒 蜂鸣器 音乐
  13. ChinaPay银联电子支付-退款功能
  14. QT绘图实现橡皮擦效果
  15. 获取设备唯一编号替代IMEI新方案
  16. 软件设计(十四)-UML建模(上)
  17. 一体机怎么修复音频服务器,导航一体机收音机信号不好?最全的自己动手修复教程来了!...
  18. Keil(MDK-ARM)使用教程——在线调试
  19. 2022年中考英语热点话题作文预测(满分范文15篇)
  20. 2023 上海(深圳)国际导热散热材料及设备展览会

热门文章

  1. CTSC2017酱油记
  2. Shell编程 之 while循环 和 until循环 和 总结
  3. javascript代码
  4. 函数矩阵OpenGL中glFrustum()和gluPerspective()的相互转换
  5. php 未实例化类调用方法的问题
  6. Java集合(三、Hashtable)
  7. GetBitmapBits和GetDIBits的区别(Windows GDI)
  8. VC++多线程工作笔记0007---线程间同步机制2
  9. Netty工作笔记0043---单Reactor多线程模式
  10. memcached高速缓存学习笔记001---memcached介绍和安装以及基本使用