PHP实现图片指定宽高缩放的两种方法

 更新时间:2023年12月06日 09:36:39   作者:zzoood  
这篇文章给大家介绍了PHP图片指定宽高缩放的两种实现方法,文中通过代码示例和图文结合的方式给大家介绍的非常详细,感兴趣的朋友可以参考下

方法一:使用 GD 库或 ImageMagick 库。

  • 这里是一个使用 GD 库的示例:
<?php
// 指定图片路径
$image_path = 'path/to/your/image.jpg';
 
// 指定缩放后的宽度和高度
$new_width = 200;
$new_height = 150;
 
// 获取图片信息
list($width, $height, $type) = getimagesize($image_path);
 
// 根据图片类型创建图片资源
switch ($type) {
    case IMAGETYPE_JPEG:
        $image = imagecreatefromjpeg($image_path);
        break;
    case IMAGETYPE_PNG:
        $image = imagecreatefrompng($image_path);
        break;
    case IMAGETYPE_GIF:
        $image = imagecreatefromgif($image_path);
        break;
    default:
        die('Unsupported image type');
}
 
// 创建一个新的空白图像
$new_image = imagecreatetruecolor($new_width, $new_height);
 
// 保持 PNG 和 GIF 图像的透明度
if ($type == IMAGETYPE_PNG || $type == IMAGETYPE_GIF) {
    imagealphablending($new_image, false);
    imagesavealpha($new_image, true);
    $transparent = imagecolorallocatealpha($new_image, 255, 255, 255, 127);
    imagefilledrectangle($new_image, 0, 0, $new_width, $new_height, $transparent);
}
 
// 将原图像复制到新图像并进行缩放
imagecopyresampled($new_image, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
 
// 输出新图像
header('Content-Type: image/' . image_type_to_extension($type, false));
// 将新图像保存到目标路径
$target_path = 'path/to/your/image_100_150.png';
imagepng($new_image, $target_path);
 
// 释放内存
imagedestroy($image);
imagedestroy($new_image);
?>
  • 原图

  • 缩放效果

方法二:使用ThinkPHP的图像处理扩展

  • 本示例版本:

php:5.0

think-image:1.0

  • 安装扩展:

composer require topthink/think-image

  • 代码示例
$image = \think\Image::open('./image.png');
// 按照原图的比例生成一个最大为150*150的缩略图并保存为thumb.png
$image->thumb(150, 150)->save('./thumb.png');

  • 缩放效果

结语:

方法一 使用GD库尺寸更加精确,但是会造成变形

方法二 尺寸上会与设置有所不同,但不会变形

到此这篇关于PHP图片指定宽高缩放的两种实现方法的文章就介绍到这了,更多相关PHP图片指定宽高缩放内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

最新评论