插件窝 干货文章 PHP实现图片指定宽高缩放的两种方法

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

image 缩放 new li 72    来源:    2024-10-18

方法一:使用 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(null, 150)->save('./thumb.png');
  • 参考文档:图像处理 · ThinkPHP5.0完全开发手册 · 看云
  • 原图

  • 缩放效果

结语:

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

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

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