文档章节

php生成缩略图

newrex
 newrex
发布于 2016/04/13 12:05
字数 453
阅读 5
收藏 0
点赞 1
评论 0
<?php
 
/**
  * 生成缩略图
  * @author yangzhiguo0903@163.com
  * @param string     源图绝对完整地址{带文件名及后缀名}
  * @param string     目标图绝对完整地址{带文件名及后缀名}
  * @param int        缩略图宽{0:此时目标高度不能为0,目标宽度为源图宽*(目标高度/源图高)}
  * @param int        缩略图高{0:此时目标宽度不能为0,目标高度为源图高*(目标宽度/源图宽)}
  * @param int        是否裁切{宽,高必须非0}
  * @param int/float  缩放{0:不缩放, 0<this<1:缩放到相应比例(此时宽高限制和裁切均失效)}
  * @return boolean
  */
function img2thumb( $src_img , $dst_img , $width = 75, $height = 75, $cut = 0, $proportion = 0)
{
     if (! is_file ( $src_img ))
     {
         return false;
     }
     $ot = fileext( $dst_img );
     $otfunc = 'image' . ( $ot == 'jpg' ? 'jpeg' : $ot );
     $srcinfo = getimagesize ( $src_img );
     $src_w = $srcinfo [0];
     $src_h = $srcinfo [1];
     $type  = strtolower ( substr (image_type_to_extension( $srcinfo [2]), 1));
     $createfun = 'imagecreatefrom' . ( $type == 'jpg' ? 'jpeg' : $type );
 
     $dst_h = $height ;
     $dst_w = $width ;
     $x = $y = 0;
 
     /**
      * 缩略图不超过源图尺寸(前提是宽或高只有一个)
      */
     if (( $width > $src_w && $height > $src_h ) || ( $height > $src_h && $width == 0) || ( $width > $src_w && $height == 0))
     {
         $proportion = 1;
     }
     if ( $width > $src_w )
     {
         $dst_w = $width = $src_w ;
     }
     if ( $height > $src_h )
     {
         $dst_h = $height = $src_h ;
     }
 
     if (! $width && ! $height && ! $proportion )
     {
         return false;
     }
     if (! $proportion )
     {
         if ( $cut == 0)
         {
             if ( $dst_w && $dst_h )
             {
                 if ( $dst_w / $src_w > $dst_h / $src_h )
                 {
                     $dst_w = $src_w * ( $dst_h / $src_h );
                     $x = 0 - ( $dst_w - $width ) / 2;
                 }
                 else
                 {
                     $dst_h = $src_h * ( $dst_w / $src_w );
                     $y = 0 - ( $dst_h - $height ) / 2;
                 }
             }
             else if ( $dst_w xor $dst_h )
             {
                 if ( $dst_w && ! $dst_h //有宽无高
                 {
                     $propor = $dst_w / $src_w ;
                     $height = $dst_h  = $src_h * $propor ;
                 }
                 else if (! $dst_w && $dst_h //有高无宽
                 {
                     $propor = $dst_h / $src_h ;
                     $width  = $dst_w = $src_w * $propor ;
                 }
             }
         }
         else
         {
             if (! $dst_h //裁剪时无高
             {
                 $height = $dst_h = $dst_w ;
             }
             if (! $dst_w //裁剪时无宽
             {
                 $width = $dst_w = $dst_h ;
             }
             $propor = min(max( $dst_w / $src_w , $dst_h / $src_h ), 1);
             $dst_w = (int) round ( $src_w * $propor );
             $dst_h = (int) round ( $src_h * $propor );
             $x = ( $width - $dst_w ) / 2;
             $y = ( $height - $dst_h ) / 2;
         }
     }
     else
     {
         $proportion = min( $proportion , 1);
         $height = $dst_h = $src_h * $proportion ;
         $width  = $dst_w = $src_w * $proportion ;
     }
 
     $src = $createfun ( $src_img );
     $dst = imagecreatetruecolor( $width ? $width : $dst_w , $height ? $height : $dst_h );
     $white = imagecolorallocate( $dst , 255, 255, 255);
     imagefill( $dst , 0, 0, $white );
 
     if (function_exists( 'imagecopyresampled' ))
     {
         imagecopyresampled( $dst , $src , $x , $y , 0, 0, $dst_w , $dst_h , $src_w , $src_h );
     }
     else
     {
         imagecopyresized( $dst , $src , $x , $y , 0, 0, $dst_w , $dst_h , $src_w , $src_h );
     }
     $otfunc ( $dst , $dst_img );
     imagedestroy( $dst );
     imagedestroy( $src );
     return true;
}


© 著作权归作者所有

共有 人打赏支持
newrex
粉丝 1
博文 5
码字总数 1631
作品 0
郑州
后端工程师
PHP 缩放图片

对于网站前端上传的图片,在后台处理时有必要对其进行缩放以生成大小统一的缩略图。在PHP中,可以很方便的使用GD库来完成这一任务。下面的CImage类的静态方法CreateThumbnail()函数可以接受原...

彭博
2012/04/12
1K
1
PHP 缩放图片

对于网站前端上传的图片,在后台处理时有必要对其进行缩放以生成大小统一的缩略图。在PHP中,可以很方便的使用GD库来完成这一任务。下面的CImage类的静态方法CreateThumbnail()函数可以接受原...

长平狐
2012/12/10
31
0
nginx实时生成缩略图到硬盘上

现在随着各终端的出现(手机,ipad等平板),以及各种终端的手机分辨率和尺寸都不同,现在手机用户流量都是宝,网上出现了各种各样的生成缩略图功能的架构,有使用php实时生成缩略图的,也有用n...

小运
2013/08/24
0
2
WordPress 的缩略图利器 timthumb

很多童鞋应该都有用过 WordPress 的缩略图功能,暂且不说那些形形色色的缩略图插件,Wordpress 2.9 版本之后就新增自带了缩略图的功能,但是不知道你有没有和我同样的感觉,Wordpress 自带的...

鉴客
2012/02/09
2.7K
0
nginx生成缩略图配置 – ttlsa教程系列之nginx

为了手机端浏览到与手机分辨率相匹配的图片,提高app访问速度以及减少用户的手机流量,需要将图片生成缩略图,这边共有以下解决方案。 A. 发布新闻生成多重缩略图 – 无法匹配到各种尺寸图片...

凯文加内特
2016/04/21
83
0
PHP实现生成透明背景的PNG缩略图

本文测试可用 之前在WEB开发笔记写过一个PHP生成缩略图的函数,虽然那个函数能够生成缩略图,但是有一定的缺陷,在生成PNG缩略图的时候,背景是黑色,今天又写了一个函数来弥补一下。代码很简...

大灰狼wow
2016/10/31
4
0
图片上传到linux服务器,生成的缩略图损坏

图片上传到linux服务器,生成的缩略图损坏。备注:png和gif格式的图片正常生成缩略图,只有jpg和jpeg格式的缩略图损坏,并且报错 Warning: imagecreatefromjpeg() [function.imagecreatefrom...

tianjing
2013/03/07
1K
3
求一个图片管理程序!!

我想找一个免费开源的图片管理程序; 所主要的功能就是图片缩略图功能,我现在网站是分离了图片。使用了子域名pic.brushes8.com 当我调用图片缩略图 1122.jpg.400x400.jpg的时候,如果当前目...

ZhangHongji
2012/06/09
159
3
Pagemap ImageWall

Pagemap ImageWall 是一个简单的用于创建Web相册的PHP脚本。只要指定好照片的路径,它就能够自动生成缩略图并用Lightbox显示原始图片。可以自定义相片显示的背景颜色以及缩略图的生成质量。...

匿名
2010/09/15
1K
0
PHP如何把上传的照片生成高质量的缩略图?

大家好,我的网站需要通过PHP把上传的照片生成高质量的缩略图,我现在遇到的主要问题是:生成的缩略图不够清晰、有锯齿。希望高手指点一下,问题可能出在哪里? 现在使用的是ImageMagick,压...

梦龙王
2014/05/07
1K
3

没有更多内容

加载失败,请刷新页面

加载更多

下一页

mysql 主从复制中遇到的错误!

。。。。。

万建宁
10分钟前
0
0
DUBBO 详细介绍

摘要: 主要核心部件: Remoting: 网络通信框架,实现了 sync-over-async 和 request-response 消息机制. RPC: 一个远程过程调用的抽象,支持负载均衡、容灾和集群功能 Registry: 服务目录框架...

明理萝
21分钟前
0
1
4 个快速的 Python 编译器 for 2018

简评:Python 和其他的解释型语言一样经常被吐槽性能不行,所以开发人员为了提升性能创建了不少编译器,本文则选取其中的四个做了基准测试。 Python 其实是一种相当快的语言,但它并不像编译...

极光推送
24分钟前
0
0
spring boot注册多个MQ服务器的问题

关于注册到多个MQ源的文章已经有很多了,这里记录一下声明queue的坑; 如果使用注册bean的方式声明queue,会导致声明的queue同时被注册到所有的MQ源上; //如果使用下面的声明方式,que...

placeholder
25分钟前
0
0
Java面试基础篇——第九篇:BIO,NIO,AIO的区别

现在IO模型主要分三类:BIO(同步阻塞IO),NIO(同步非阻塞IO),AIO()。 先来看看BIO。 1. BIO 服务端接受到请求后,要指派或新建一个线程去处理客户端的IO请求,直到收到断开连接的指令。这么做...

developlee的潇洒人生
30分钟前
0
0
@RequestMapping @ResponseBody 和 @RequestBody 用法与区别

1.@RequestMapping 国际惯例先介绍什么是@RequestMapping,@RequestMapping 是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为...

特拉仔
32分钟前
1
0
基于 HTML5 结合互联网+ 的 3D 隧道

前言 目前,物资采购和人力成本是隧道业发展的两大瓶颈。比如依靠民间借贷,融资成本很高;采购价格不透明,没有增值税发票;还有项目管控和供应链管理的问题。成本在不断上升,利润在不断下...

xhload3d
34分钟前
0
0
济南小程序热度分析

原文链接:http://www.jnqianle.cn/company/2072.html

tianma3798
35分钟前
1
0
大数据软件

beats 采集 kafka spark hive es grafana zeppelin

ArlenXu
37分钟前
0
0
Mac item2常用快捷键

标签 新建标签:command + t 关闭标签:command + w 切换标签:command + 数字 command + 左右方向键 切换全屏:command + enter 查找:command + f 分屏 水平分屏:command + d 垂直分屏:c...

说回答
40分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部