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是目前应用最为广泛的Web开发语言之一,在PHP开发过程中,常见的问题就是如何在不同文件之间传递数据,命名管道便是一种解决方案。本文将介绍PHP中的命名管道以及如何使用它们来实现进程间通信。一、什么是命名…

    2023年5月23日
    03
  • PHP上传问题的后续问题

    如何验证文件类型 验证文件括展名 验证文件MIME类型 保证上传文件命名的唯一性 时间 时间戳 IP 将上传功能进行封装 如何上传多文件 html文件: 测试代码: 运行结果: $FILE: 第一个[]:文件框名称 第二个[]:属性 第…

    2017年11月8日 PHP自学教程
    0215
  • 如何使用PHP实现微信小程序中的抽奖和福利。

    随着微信小程序的普及,越来越多企业开始通过微信小程序来开展业务。其中,抽奖和福利活动既能增强用户粘度,也能提升企业知名度。本文将介绍如何使用PHP来实现微信小程序中的抽奖和福利活动。一. 微信小程序登录首…

    2023年6月3日
    03
  • 聊聊php编程用什么软件,三种人学不会编程。

    编程是一种需要逻辑思维和解决问题能力的技能,对于不同的人,学习编程的难度也会有所不同,有些人可能会觉得编程很难,甚至有些“学不会”,只要你有决心,有耐心,有正确的学习方法,你就能够掌握编程。 我们要明确…

    2024年7月4日
    01
  • 浅谈PHP中的工厂方法模式

    本篇文章带大家了解一下PHP设计模式中的工厂方法模式。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。上回说到,简单工厂不属于GoF的二十三种设计模式,这回可就来真家伙了,大名顶顶的工厂方…

    2023年3月29日
    02
  • 如何进行PHP的安全管理?

    PHP作为一种开源的编程语言,广泛应用于Web开发领域。然而,随着网络安全威胁不断增加,对PHP应用的安全管理也变得越来越重要。在这篇文章中,我们将探讨如何进行PHP的安全管理,以保障应用的安全性。优化代码在编…

    2023年5月17日
    04
  • 浅谈PHP中的装饰器模式

    装饰器模式允许向一个现有的对象添加新的功能,同时又不改变其结构。本篇文章带大家了解PHP中的装饰器模式,介绍一下装饰器的好处以及最适用于的场景。工厂模式告一段落,我们来研究其他一些模式。不知道各位大佬有…

    2023年3月29日
    05
  • 教你玩转PHP概述与环境搭建

    你知道什么是PHP吗?PHP起源于1995年,由Rasmus Lerdorf开发。到现在,PHP已经经历了几十年的时间洗涤,成为全球最受欢迎的脚本语言之一。就让我们一起去看看吧PHP5是一种面向对象的、完全跨平台的新型Web开发语言…

    2023年3月29日 PHP自学教程
    01

联系我们

QQ:951076433

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