PHP实现图片等比例缩略图

PHP实现图片等比例缩略图,生成正方形缩略图。

步骤:待压缩正方形图片的边长为原始图片宽度和高度的像素最小值,图片宽高较长的一边裁剪中间部分,再实现像素压缩。

<?php

$imgpath = 'test.jpg';

if (!empty($imgpath)) {
    $info = getImageInfo($imgpath);
    if ($info) {
        $srcWidth  = $info['width'];
        $srcHeight = $info['height'];
        if ($srcWidth < $srcHeight) {
            $srcSize = $srcWidth;
            $srcX = 0;
            $srcY = ($srcHeight - $srcWidth) / 2;
        } else {
            $srcSize = $srcHeight;
            $srcX = ($srcWidth - $srcHeight) / 2;
            $srcY = 0;
        }
        $type = strtolower(empty($type) ? $info['type'] : $type);
        unset($info);

        //构造函数
        $loadImage = 'imagecreatefrom'.($type=='jpg'?'jpeg':$type);
        $createImage = 'image'.($type=='jpg'?'jpeg':$type);

        //参数
        $quality = 60;
        $thumb_size = 200;

        //载入原图
        $src_image    = $loadImage($imgpath);

        //创建目标图
        $thumb_image = imagecreatetruecolor($thumb_size, $thumb_size);
        $color = imagecolorallocatealpha($thumb_image, 255, 255, 255, 100);
        imagefill($thumb_image, 0, 0, $color);

        //处理
        //bool imagecopyresampled(resource $dst_image, resource $src_image, int $dst_x, int $dst_y, int $src_x, int $src_y, int $dst_w, int $dst_h, int $src_w, int $src_h)
        $result = imagecopyresampled($thumb_image, $src_image, 0, 0, $srcX, $srcY, $thumb_size, $thumb_size, $srcSize, $srcSize);

        //生成图片
        $index = strpos($imgpath, '.', 0);
        $thumb_imgpath = substr($imgpath, 0, $index) . "-thumb" . substr($imgpath, $index);
        $createImage($thumb_image, $thumb_imgpath, 100);

        //释放资源
        imagedestroy($src_image);
        imagedestroy($thumb_image);
    }
}

function getImageInfo($imgpath) {
    $info = array();
    $imageInfo = getimagesize($imgpath);
    if($imageInfo !== false) {
        $imageType = strtolower(substr(image_type_to_extension($imageInfo[2]), 1));
        $imageSize = filesize($imgpath);
        $info['width'] = $imageInfo[0];
        $info['height'] = $imageInfo[1];
        $info['type'] = $imageType;
        $info['size'] = $imageSize;
        $info['mime'] = $imageInfo['mime'];
    }
    return $info;
}

?>

版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/02/19/php-realize-image-scale-thumbnail/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
海报
PHP实现图片等比例缩略图
PHP实现图片等比例缩略图,生成正方形缩略图。 步骤:待压缩正方形图片的边长为原始图片宽度和高度的像素最小值,图片宽高较长的一边裁剪中间部分,再实现像素……
<<上一篇
下一篇>>
文章目录
关闭
目 录