[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

【超过500家企业部署】AWS搭建、运维、监控服务

【超过500家企业部署】AWS搭建、运维、监控服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

[仅适用于 WordPress] 云服务器“Web Speed”

[仅适用于 WordPress] 云服务器“Web Speed”

如何使用 FuelPHP 的 Image 类:记住一件事,忘记三件事

你好。
我是Mandai,负责Wild 开发团队。

当使用 PHP 处理图像时,您通常被迫在使用 GD 和 ImageMagick 之间做出选择。
我认为这取决于您的喜好和情况,是否使用ImageMagick(因为转换后的准确性)或GD(易于安装)。

但麻烦的是你需要学习两种不同的图像处理方法,用途完全不同。

这次我们来介绍一下FuelPHP的Image类,它封装了这两个库的基本功能,可以用通用的方法调用。

此外,如果您安装了 ImageMagick,FuelPHP 还提供了一种通过 exec 函数使用 Convert 命令进行转换的方法,即使您没有安装 IMagick。
使用 FuelPHP 版本 1.8。

安装库

安装基本上很容易,因为可以通过包管理器完成。
我总结了GD和ImageMagick的安装步骤。

 

安装GD

对于CentOS,GD安装是使用yum命令完成的。
这次我在安装了remi的PHP5.6的环境中添加了GD。

1
sudo yum install --enablerepo=remi-php56 php-gd

然后重新启动网络服务器就完成了。
查看phpinfo()的结果,如果有关于GD的描述,则说明成功。

 

安装 ImageMagick

接下来是安装 ImageMagick 的步骤。
顺便说一句,如果你想用 PHP 编辑图像,你只需要安装 GD 或 ImageMagick 即可。
你不需要两者。

首先,使用 yum 命令安装 ImageMagick。

1
sudo yum 安装 ImageMagick

根据您运行的 Linux,它可能已经安装。
那时,继续前进。
接下来,安装 IMagick,一个用于从 PHP 处理 ImageMagick 的扩展库。

 

安装IMagick

接下来,使用 PECL 安装 PHP 端库 IMagick。
如果您不假思索地运行以下命令...

1
pecl install imagick 无法安装,当前用户无法写入频道“pecl.php.net”的 php_dir

这就是让我生气的原因。
使用 sudo 运行它,如下所示。

1
sudo pecl install imagick 下载 imagick-3.4.3RC1.tgz ... 开始下载 imagick-3.4.3RC1.tgz (245,140 字节) ...... .......完成: 245,140 字节 19 个源文件,正在构建: phpize 配置为: PHP Api 版本:20131106 Zend 模块 Api 编号:20131226 Zend 扩展 Api 编号:220131226 请提供 Imagemagick 安装的前缀 [自动检测] :在 /var/tmp/pear-build-rootELyyWP/imagick- 中构建3.4.3RC1 运行: /var/tmp/imagick/configure --with-php-config=/usr/bin/php-config --with-imagick 检查处理长行的 grep 和 -e... /bin/ grep 检查egrep... /bin/grep -E 检查不截断输出的sed... /bin/sed 检查cc.. cc 检查C 编译器默认输出文件名... a.out检查 C 编译器是否有效... 是检查我们是否正在交叉编译... 不检查可执行文件的后缀... 检查目标文件的后缀 ... o 检查我们是否正在使用 GNU C 编译器...是检查 cc 是否接受 -g... 是检查 cc 选项以接受 ISO C89... 不需要检查如何运行 C 预处理器... cc -E 检查 icc... 不检查 suncc...否 检查 cc 是否同时理解 -c 和 -o... 是 检查系统库目录... lib 检查编译器是否支持 -R... 否 检查编译器是否支持 -Wl,-rpath,... 是 检查构建系统类型... x86_64-unknown-linux-gnu 检查主机系统类型... x86_64-unknown-linux-gnu 检查目标系统类型... x86_64 -unknown-linux-gnu 检查 PHP 前缀... /usr 检查对于 PHP 包括... -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include /php/ext -I/usr/include/php/ext/date/lib 检查 PHP 扩展目录... /usr/lib64/php/modules 检查 PHP 安装的标头前缀... /usr/include/php 检查如果启用了调试...不检查是否启用了 zts...不检查 re2c...不配置:警告:如果要重新生成检查 gawk 的 PHP 解析器,则需要 re2c 0.13 或更高版本。 .gawk 检查是否启用 imagick 扩展...是的,共享检查 pkg-config.../usr/bin/pkg-config 检查 ImageMagick MagickWand API 配置程序...检查测试 /usr/local/bin/MagickWand -config...不存在检查测试 /usr/bin/MagickWand-config...不存在检查测试 /usr/sbin/bin /MagickWand-config...不存在检查测试 /opt/ bin/MagickWand-config... 不存在检查测试 /opt/local/bin/MagickWand-config... 不存在配置:错误:未找到 请提供 MagickWand-config 或 Wand-config 的路径。错误:`/var/tmp/imagick/configure --with-php-config=/usr/bin/php-config --with-imagick '失败

由于错误而停止。
在这种情况下,根据我的经验,安装一个名为 [package name]-devel 的开发包通常会起作用,我不知道它是否存在,但现在,我会尝试输入以下命令。 。

1
sudo yum install ImageMagick-devel

它似乎运行良好,所以我将安装它。
依赖包较多,可能需要一些时间。

如果安装成功,请尝试再次从 PECL 安装 IMagick。

1
sudo pecl install imagick 下载 imagick-3.4.3RC1.tgz ... 开始下载 imagick-3.4.3RC1.tgz (245,140 字节) ...... .......完成: 245,140 字节 19 个源文件,构建 -- 省略 -- 构建过程成功完成安装 '/usr/lib64/php/modules/imagick.so' 安装 '/usr/include/php/ ext/imagick/php_imagick_shared.h' 安装正常:channel://pecl .php.net/imagick-3.4.3RC1 配置选项“php_ini”未设置为 php.ini 位置 您应该将“extension=imagick.so”添加到 php.ini

看来编译成功完成,安装成功。
最后,有一条消息要求您将“extension=imagick.so”添加到php.ini,所以我们添加它。

如果你想巧妙地做到这一点,你可以在/etc/php.d/下创建一个具有适当名称的ini文件,并将“extension=imagick.so”放入其中。

就像GD一样,你所要做的就是重新启动Web服务器。

 

准备处理 FuelPHP 中的各种图像库

首先,准备一个处理 Image 类设置的配置文件。
默认设置是fuel/core/config/image.php,因此将其复制到fuel/app/config下。
从 FuelPHP 根目录,您可以使用以下命令复制它。

1
cp -afuel/core/config/image.phpfuel/app/config/image.php

复制后,编辑fuel/app/config/image.php。

设置位置是第 26 行要使用的库设置。

1
'司机' => 'gd',

默认情况下,选择 GD,因此如果您想使用 ImageMagick,请将其更改为“imagemagick”或“imagick”。

接下来是图像质量设置。

1
“质量”=> 94,

默认情况下,图像质量为100%,这是最高质量,如果使用JPEG,转换后的文件大小会大几倍。
GD的默认值是75,所以最好调整在75到95之间。

之后,就由你决定了。

在初始状态下,一旦执行save方法或output方法,图像就会重新加载。
如果由于某种原因您想再次使用相同的图像(例如保存输出图像),

1
'坚持' => 真实,

如果您将其设置为 ,则不会重新加载,并且看起来不错。

 

我们来尝试编辑一下

图像从 Fuel\Core\Image 类加载。
该类根据配置内容选择 GD、IMagick 和 ImageMagick 的驱动程序。

1
$image = Fuel\Core\Image::forge(null, '/path/to/image');

现在图像已加载。
使用 GD 时,您必须自己选择和使用 imagecreatefrom* 函数,但您可以在类中识别和定义它们。
但是,由于它仅根据扩展名进行区分,因此加载没有扩展名的文件时会出现错误。

在这种情况下,应使用负载方法而不是锻造。

1
$image = Fuel\Core\Image::load('/path/to/image', false, 'jpg');

您可以使用第三个参数指定扩展名。
如果您想编辑没有扩展名的文件,检查它的唯一方法是二进制格式,因此您需要一点创意。
第二个参数只对GD有效,我不太明白如何使用它。

在这种情况下,您无法添加或覆盖配置,因此您需要提前创建配置文件。

对于各种编辑, Image - Class - FuelPHP 文档非常有用。
这里的方法对于所有驱动来说都是通用的,所以你只需要理解这里就可以了。

裁剪方法对于裁剪图像很有用

如果你想从中心裁剪, crop_resize方法很方便。

resize 方法对于调整图像大小很有用

如果你想旋转图像, rotate方法很有用。
使用GD时,如果背景在30度或45度处可见,似乎无法设置透明色。

当您想要翻转图像(垂直或水平更改方向,就像在镜子中反射一样)时,翻转类非常有用

如果您想向图像添加水印,则水印方法非常有用

当您想要为图像添加边框时,边框方法非常有用

如果您想将图像屏蔽到加载的图像,则mask 方法非常有用

在转换为带有圆角的图像时,圆角方法非常有用
然而,当结合ImageMagick和透明图像使用该方法时,似乎存在四个角的透明部分不透明的问题。
GD使用PHP计算颜色信息。

如果您想知道图像大小, sizes 方法很有用。
在这种情况下,大小是图像的水平和垂直像素数,而不是文件大小。
要获取文件大小,请使用标准函数filesize。

如果要将图像转换为灰度图像,灰度方法很有用。
Imagick和ImageMagick使用ImageMagick提供的专用函数,GD在循环中提取所有像素并在PHP上计算每个像素的颜色信息。

如果您想通过发送 HTTP 标头在浏览器中显示图像,则输出方法非常有用

如果只是简单的编辑,我想上面的内容就足够了。
它特别有用,因为更改尺寸非常容易。

就是这样。

如果您觉得这篇文章有帮助,请点赞!
0
加载中...
0 票,平均:0.00 / 10
2,335
X Facebook 哈特纳书签 口袋
[2026.6.30 Amazon Linux 2支持端] Amazon Linux服务器迁移解决方案

[2026.6.30 Amazon Linux 2支持端] Amazon Linux服务器迁移解决方案

写这篇文章的人

关于作者

万代洋一

我的主要工作是为社交游戏开发 Web API,但我也很幸运能够做很多其他工作,包括营销。
此外,我在 Beyond 中的肖像权被视为 CC0。