前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP图片处理实现图片压缩、合并、水印等

PHP图片处理实现图片压缩、合并、水印等

作者头像
子润先生
修改2021-06-23 09:57:04
2.5K0
修改2021-06-23 09:57:04
举报

Intervention Image是一个开源的PHP图像处理和操作库,可不依赖于框架单独使用,也提供了对Laravel的友好支持。它提供了一种创建,编辑和合成图像且富有表现力的简便方法,并支持当前两个最常见的图像处理库:GD Library和Imagick。

编写该类是为了使PHP图像操作更容易和更具表现力。 无论您是要创建图像缩略图,水印还是对大型图像文件进行格式化,Intervention Image都可以帮助您以最少的代码行轻松地管理每个任务。

支持对图片尺寸/质量压缩、图片合并、添加水印等常用功能。

环境

  • php >= 5.4
  • Fileinfo Extension

及以下库二选一

  • GD Library (>=2.0)
  • Imagick PHP extension (>=6.5.7)

安装

代码语言:javascript
复制
$ composer require intervention/image

用法

代码语言:javascript
复制
// import the Intervention Image Manager Class
use Intervention\Image\ImageManager;

// create an image manager instance with favored driver
$manager = new ImageManager(array('driver' => 'imagick'));

// to finally create image instances
$image = $manager->make('public/foo.jpg')->resize(300, 200);

或使用静态方法

代码语言:javascript
复制
// import the Intervention Image Manager Class
use Intervention\Image\ImageManagerStatic as Image;

// configure with favored image driver (gd by default)
Image::configure(array('driver' => 'imagick'));

// and you are ready to go ...
$image = Image::make('public/foo.jpg')->resize(300, 200);

在Laravel中的用法

配置

config/app.php 中配置 providers

代码语言:javascript
复制
Intervention\Image\ImageServiceProvider::class

配置 aliases

代码语言:javascript
复制
'Image' => Intervention\Image\Facades\Image::class
生成配置文件

此扩展包默认使用GD库来进行图片处理,但由于 GD 库对图像的处理效率要稍逊色于 ImageMagick 库,因此推荐替换为 ImageMagick 库来进行图像处理。(如果遇到不稳定、超时、未响应等问题,建议替换为 imagemagick 库)

代码语言:javascript
复制
$ php artisan vendor:publish --provider="Intervention\Image\ImageServiceProviderLaravelRecent"

执行此命令会在 config 文件夹下新增 image.php 配置文件,里面可配置扩展包驱动,默认为 GD

用法
代码语言:javascript
复制
$image = Image::make($path);

// 尺寸等比压缩,最大宽度800
if (($width = $image->getWidth()) > 800) {
    // 等比缩放,需要计算宽度缩放的比例,再计算出缩放后的图片高度
    $proportion = $width / 800;
    $height = ceil($image->getHeight() / $proportion);
    $image = $image->resize(800, $height);
}

// 保存图片,并设置质量压缩为70
$image->save($path, 70);

ImageMagick 库

安装扩展库

代码语言:javascript
复制
# 安装 ImageMagick 库
$ yum install -y ImageMagick ImageMagick-devel

# 安装PHP扩展
$ pecl install imagick

修改 php.ini

代码语言:javascript
复制
extension=imagick.so

最后重启 php-fpm

代码语言:javascript
复制
$ php-fpm restart

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 环境
  • 安装
  • 用法
  • 在Laravel中的用法
    • 配置
      • 生成配置文件
        • 用法
        • ImageMagick 库
        相关产品与服务
        图像处理
        图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档