首页 > 后端开发 > PHP问题 > php 怎么生成缩略图不失真

php 怎么生成缩略图不失真

藏色散人
发布: 2023-03-15 07:30:02
原创
2469 人浏览过

php生成缩略图不失真的方法:1、创建一个PHP示例文件;2、通过“function reSizeImg($imgSrc, $resize_width...) {...}”方法等比例生成图片缩略图即可。

php 怎么生成缩略图不失真

本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑

php 怎么生成缩略图不失真?

使用php函数等比例生成图片缩略图不失真的代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

//等比例生成图片缩略图不失真

 

/**

    * 生成缩略图

    * $imgSrc           图片源路径

    * $resize_width     图片宽度

    * $resize_height    图片高度

    * $dstimg           缩略图路径

    * $isCut            是否剪切图片

    */

     function reSizeImg($imgSrc, $resize_width, $resize_height, $dstimg, $isCut = false) {

        //图片的类型

        $type = substr(strrchr($imgSrc, "."), 1);

        //初始化图象

        if ($type == "jpg" || $type == "jpeg") {

            $im = imagecreatefromjpeg($imgSrc);

        }

        if ($type == "gif") {

            $im = imagecreatefromgif($imgSrc);

        }

        if ($type == "png") {

            $im = imagecreatefrompng($imgSrc);

        }

 

        $width = imagesx($im);

        $height = imagesy($im);

 

        //生成图象

        //改变后的图象的比例

        $resize_ratio = ($resize_width) / ($resize_height);

        //实际图象的比例

        $ratio = ($width) / ($height);

        if (($isCut) == 1) {

            if ($ratio >= $resize_ratio) {

                //高度优先

                $newimg = imagecreatetruecolor($resize_width, $resize_height);

                imagecopyresampled($newimg, $im, 0, 0, 0, 0, $resize_width, $resize_height, (($height) * $resize_ratio), $height);

                ImageJpeg($newimg, $dstimg);

            }

            if ($ratio < $resize_ratio) {

                //宽度优先

                $newimg = imagecreatetruecolor($resize_width, $resize_height);

                imagecopyresampled($newimg, $im, 0, 0, 0, 0, $resize_width, $resize_height, $width, (($width) / $resize_ratio));

                ImageJpeg($newimg, $dstimg);

            }

        } else {

            if ($ratio >= $resize_ratio) {

                $newimg = imagecreatetruecolor($resize_width, ($resize_width) / $ratio);

                imagecopyresampled($newimg, $im, 0, 0, 0, 0, $resize_width, ($resize_width) / $ratio, $width, $height);

                ImageJpeg($newimg, $dstimg);

            }

            if ($ratio < $resize_ratio) {

                $newimg = imagecreatetruecolor(($resize_height) * $ratio, $resize_height);

                imagecopyresampled($newimg, $im, 0, 0, 0, 0, ($resize_height) * $ratio, $resize_height, $width, $height);

                ImageJpeg($newimg, $dstimg);

            }

        }

        ImageDestroy($im);

    }

 

$result = reSizeImg(&#39;images/15M.jpg&#39;, 1280, 1280,&#39;thumb/xiao15.jpg&#39;);

登录后复制

推荐学习:《PHP视频教程》     

以上是php 怎么生成缩略图不失真的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板