PHP生成缩略图的方法实例(附代码)

生成缩略图需要用到如下代码:

$source_path:原图的路径

$NewImagePath:生成缩略图路径

$target_width:缩略图宽度

$target_height:缩略图高度

详细代码如下:

 

 $target_ratio)
        {
            $cropped_width  = $source_width;
            $cropped_height = $source_width * $target_ratio;
            $source_x = 0;
            $source_y = ($source_height - $cropped_height) / 2;
        }
        // 源图过宽
        elseif ($source_ratio < $target_ratio)
        {
            $cropped_width  = $source_height / $target_ratio;
            $cropped_height = $source_height;
            $source_x = ($source_width - $cropped_width) / 2;
            $source_y = 0;
        }
        // 源图适中
        else
        {
            $cropped_width  = $source_width;
            $cropped_height = $source_height;
            $source_x = 0;
            $source_y = 0;
        }

        switch ($source_mime)
        {
            case 'image/gif':
                $source_image = imagecreatefromgif($source_path);
                break;

            case 'image/jpeg':
                $source_image = imagecreatefromjpeg($source_path);
                break;

            case 'image/png':
                $source_image = imagecreatefrompng($source_path);
                break;

            default:
                return false;
                break;
        }

        $target_image  = imagecreatetruecolor($target_width, $target_height);
        $cropped_image = imagecreatetruecolor($cropped_width, $cropped_height);

        // 图片裁剪
        imagecopy($cropped_image, $source_image, 0, 0, $source_x, $source_y, $cropped_width, $cropped_height);
        // 图片缩放
        imagecopyresampled($target_image, $cropped_image, 0, 0, 0, 0, $target_width, $target_height, $cropped_width, $cropped_height);


        header('Content-Type: image/jpeg');
        imagejpeg($target_image,$NewImagePath,100);
        imagedestroy($source_image);
        imagedestroy($target_image);
        imagedestroy($cropped_image);
        
    }

以下方法是生成缩略图,填充白边的方法:

= $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,$NewImagePath,100);
        imagedestroy($src_image);
        imagedestroy($final_image);


    }

本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/4476.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
重蔚重蔚管理团队
上一篇 2018年2月28日 09:48
下一篇 2018年2月28日 14:59

相关推荐

  • php如何使用PHP的Tokenizer扩展。

    PHP是一种流行的服务器端脚本语言,因其易用性和灵活性而备受欢迎。PHP的Tokenizer扩展是一种强大的工具,它允许你将PHP代码分解为令牌,以便进行语法分析和其他操作。在本文中,我们将介绍如何使用PHP的Tokenizer…

    2023年6月3日
    08
  • 关于PHP数组的详解

     什么是数组 一个标量变量就是一个用来存储数值的命名区域。同样,一个数组就是一个用来存储一系列变量值的命名区域,因此,可以使用数组组织标量变量。 存储在数组中的值称为数组元素。每个数组元素有一个相关的索…

    2018年3月5日
    0162
  • 如何在PHP中实现社交网站。

    随着互联网的普及和社交化趋势的加强,社交网站成为了人们日常生活中不可或缺的一部分。在这个领域中,PHP是最流行的开发语言之一。本文将介绍如何使用PHP来实现一个基本的社交网站。1.设计数据库架构在开始编写代…

    2023年5月22日
    02
  • php的数组类型array

    标识一系列数据的“有序排列”的集合体。 php中,数组的下标可以使用整数或字符串。 数字下标常说“索引号”, 字符串下标常说“键名”。 实际上,在php的报错系统中,都叫做“index”,或offset 数组中还可以存储数组,就…

    2018年3月17日
    0234
  • PHP中的设计模式有哪些?

    在开发Web应用程序的过程中,使用设计模式可以提高代码的可读性、可维护性和可扩展性。PHP是一种常用的Web编程语言,其也支持使用各种设计模式,本文将对常用的PHP设计模式进行介绍。单例模式(Singleton)单例模式…

    2023年5月17日
    00
  • PHP入门指南:文件包含漏洞。

    PHP是一种广泛使用的服务器端编程语言,许多网站和应用程序都使用PHP作为其后端开发语言。然而,与所有编程语言一样,PHP也有其漏洞和安全问题。本文将重点介绍PHP文件包含漏洞,并提供一些简单的建议来帮助您保护…

    2023年5月23日
    01
  • 直击PHP使用ajax的post方式下载excel文件简单示例

    本文实例讲述了PHP使用ajax的post方式下载excel文件。分享给大家供大家参考,具体如下:项目需求,前端发起ajax请求,后端生成excel并下载,同时需要在header头中,带上token验证信息,参考了很多文章,最终实现如…

    2022年6月15日
    0310
  • PHP实现抓取百度搜索结果,并分析数据结构

    PHP网络爬虫实践:抓取百度搜索结果,并分析数据结构百度的搜索引擎有反爬虫机制,我先直接用guzzle试试水。代码如下:<?php /** * Created by Benjiemin * Date: 2020/3/5 * Time: 14:58 */ require ('./v…

    2022年6月20日 PHP自学教程
    0336

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息