PHP生成缩略图实例讲解

 更新时间:2021年03月05日 16:44:55   作者:祝君圆梦  
这篇文章主要介绍了PHP生成缩略图实例讲解,文章列举了实例代码,有正好需要的同学可以借鉴下

封装的方法函数:

<?php
	/**
  * 生成缩略图
  * $imgSrc     图片源路径
  * $thumbWidth   缩略图宽度
  * $thumbHeight  缩略图高度
  * $thumbSrc    缩略图路径
  * $isCut     是否剪切图片
  */
  function createThumbImg($imgSrc, $thumbWidth, $thumbHeight, $thumbSrc, $isCut = false) {
    //1.获取图片的类型
    $type = substr(strrchr($imgSrc, "."), 1);
    //2.初始化图象
    if ($type == "jpg" || $type == "jpeg") {
			//创建一块画布,并从JPEG文件或URL地址载入一副图像
      $sourceImg = imagecreatefromjpeg($imgSrc);
    }elseif ($type == "gif") {
			//创建一块画布,并从GIF文件或URL地址载入一副图像
      $sourceImg = imagecreatefromgif($imgSrc);
    }elseif ($type == "png") {
			//创建一块画布,并从PNG文件或URL地址载入一副图像
      $sourceImg = imagecreatefrompng($imgSrc);
    }
		elseif ($type == "wbmp") {
			//创建一块画布,并从WBMP文件或URL地址载入一副图像
      $sourceImg = imagecreatefromwbmp($imgSrc);
    }
		//取得图像宽度
    $width = imagesx($sourceImg);
		//取得图像高度
    $height = imagesy($sourceImg);
 
    //3.生成图象
    //缩略图的图象比例
    $scale = ($thumbWidth) / ($thumbHeight);
    //源图片的图象比例
    $ratio = ($width) / ($height);
    if (($isCut) == 1) {
			//高度优先
      if ($ratio >= $scale) {        
				//创建真彩图像资源(imagecreatetruecolor()函数使用GDLibrary创建新的真彩色图像)
        $newimg = imagecreatetruecolor($thumbWidth, $thumbHeight);
				//图像处理
        imagecopyresampled($newimg, $sourceImg, 0, 0, 0, 0, $thumbWidth, $thumbHeight, (($height) * $scale), $height);
        //以JPEG格式将图像输出到浏览器或文件
				ImageJpeg($newimg, $thumbSrc);
      }
			 //宽度优先
      if ($ratio < $scale) {       
        $newimg = imagecreatetruecolor($thumbWidth, $thumbHeight);
        imagecopyresampled($newimg, $sourceImg, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $width, (($width) / $scale));
        ImageJpeg($newimg, $thumbSrc);
      }
    } else {
      if ($ratio >= $scale) {
        $newimg = imagecreatetruecolor($thumbWidth, ($thumbWidth) / $ratio);
        imagecopyresampled($newimg, $sourceImg, 0, 0, 0, 0, $thumbWidth, ($thumbWidth) / $ratio, $width, $height);
        ImageJpeg($newimg, $thumbSrc);
      }
      if ($ratio < $scale) {
        $newimg = imagecreatetruecolor(($thumbHeight) * $ratio, $thumbHeight);
        imagecopyresampled($newimg, $sourceImg, 0, 0, 0, 0, ($thumbHeight) * $ratio, $thumbHeight, $width, $height);
        ImageJpeg($newimg, $thumbSrc);
      }
    }
		//销毁图像
    ImageDestroy($sourceImg);
  }
?>

调用示例:

<?php
	//图片源路径
	$imgSrc="D:/PHP/test/demo.jpg";
	//缩略图路径
	$thumbSrc="D:/PHP/test/thumb.jpg";
	createThumbImg($path,100,100,$thumbSrc);
?>

到此这篇关于PHP生成缩略图实例讲解的文章就介绍到这了,更多相关PHP生成缩略图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Laravel框架生命周期与原理分析

    Laravel框架生命周期与原理分析

    这篇文章主要介绍了Laravel框架生命周期与原理,结合实例形式总结分析了Laravel框架针对用户请求响应的完整运行周期、流程、原理,需要的朋友可以参考下
    2018-06-06
  • 利用Fix Rss Feeds插件修复WordPress的Feed显示错误

    利用Fix Rss Feeds插件修复WordPress的Feed显示错误

    这篇文章主要介绍了利用Fix Rss Feeds插件修复WordPress的Feed显示错误的方法,需要的朋友可以参考下
    2015-12-12
  • 分享5个非常有用的Laravel Blade指令

    分享5个非常有用的Laravel Blade指令

    这篇文章主要给大家分享介绍了5个非常有用的Laravel Blade指令,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-05-05
  • Laravel如何使用数据库事务及捕获事务失败后的异常详解

    Laravel如何使用数据库事务及捕获事务失败后的异常详解

    最近在学习Laravel,在学习中遇到了不少的问题,所以想着总结记录下来,所以下面这篇文章主要给大家介绍了关于Laravel如何使用数据库事务及捕获事务失败后异常的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-10-10
  • laravel + vue实现的数据统计绘图(今天、7天、30天数据)

    laravel + vue实现的数据统计绘图(今天、7天、30天数据)

    这篇文章主要给大家介绍了关于利用laravel + vue如何实现数据统计绘图(今天、7天、30天数据)的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,需要的朋友们下面随着小编来一起看看吧
    2018-07-07
  • php对数组排序代码分享

    php对数组排序代码分享

    这篇文章主要介绍了php对数组排序代码,需要的朋友可以参考下
    2014-02-02
  • thinkphp连贯操作实例分析

    thinkphp连贯操作实例分析

    这篇文章主要介绍了thinkphp连贯操作,以实例形式较为详细的分析了连贯操作的具体用法及常用的方法含义,是非常实用的技巧,需要的朋友可以参考下
    2014-11-11
  • php 类自动载入的方法

    php 类自动载入的方法

    在PHP5之前,各个PHP框架如果要实现类的自动加载,一般都是按照某种约定自己实现一个遍历目录,自动加载所有符合约定规则的文件的类或函数。 当然,PHP5之前对面向对象的支持并不是太好,类的使用也没有现在频繁。 我们来详细探讨下吧。
    2015-06-06
  • ThinkPHP结合AjaxFileUploader实现无刷新文件上传的方法

    ThinkPHP结合AjaxFileUploader实现无刷新文件上传的方法

    这篇文章主要介绍了ThinkPHP结合AjaxFileUploader实现无刷新文件上传的方法,是ThinkPHP文件上传中一个比较典型的应用技巧,非常具有实用价值,需要的朋友可以参考下
    2014-10-10
  • Laravel执行migrate命令提示:No such file or directory的解决方法

    Laravel执行migrate命令提示:No such file or directory的解决方法

    这篇文章主要介绍了Laravel执行migrate命令提示:No such file or directory的解决方法,分析了执行migrate命令出现错误的原因与相关的解决方法,需要的朋友可以参考下
    2016-03-03

最新评论