rfd/imagemagick

RFD ImageMagick 库

1.4.0 2018-07-02 11:40 UTC

This package is not auto-updated.

Last update: 2024-09-29 13:03:37 UTC


README

RFD ImageMagick 库。

需求

  • ImageMagick 必须在您的 $PATH 中(例如 /usr/bin/convert)
  • PHP 必须能够运行 exec()

用法

composer require rfd/imagemagick

<?php

use Rfd\ImageMagick\ImageMagick;
use Rfd\ImageMagick\CLI\Operation\Factory as OperationFactory;
use Rfd\ImageMagick\Image\File;
use Rfd\ImageMagick\Options\CommonOptions;

require __DIR__ . '/vendor/autoload.php';

$im = new ImageMagick(new OperationFactory());

$image = new File('/path/to/your/image.png');
$output = new File('/path/to/output/image.jpg');

$operation_builder = $im->getOperationBuilder($image);

$operation_builder
    ->resize()
        ->setWidth(320)
        ->setHeight(240)
        ->setGravity(CommonOptions::GRAVITY_CENTER)
    ->next()
    ->slice()
        ->setWidth(300)
        ->setHeight(200)
        ->setOffsetX(0)
        ->setOffsetY(0)
        ->setGravity(CommonOptions::GRAVITY_NORTHWEST)
    ->finish($output);

关于

包含的功能

只包含我们在 RedFlagDeals 中发现的有用的几个命令。您可以将它们组合起来以完成最常见的事情。

命令

切片

根据宽度、高度、偏移 X、偏移 Y 和重力从图像中提取矩形。

调整大小

根据宽度、高度、重力以及调整大小模式调整图像大小。

模式

CommonOptions::MODE_ONLY_SHRINK_LARGER 只有当图像大于请求的尺寸时才会缩小图像。否则它保持图像不变。见: https://imagemagick.org.cn/Usage/resize/#shrink

CommonOptions::MODE_FILL_AREA 将调整大小为最小的维度。见: https://imagemagick.org.cn/Usage/resize/#fill

CommonOptions::MODE_FILL_AREA_OR_FIT 如果图像大于请求的宽度和高度,则将调整大小以填充区域。否则,它将增加图像的大小以适应宽度和高度。

CommonOptions::MODE_RESIZE_ABSOLUTE 不关心宽高比,并强制图像正好是请求的宽度和高度。见: https://imagemagick.org.cn/Usage/resize/#noaspect

转换

一些默认值设置为 CommonOptions::FORMAT_*,它将强制输出模式为特定图像类型。ImageMagick 识别为图像格式的任何字符串都将被接受。

序列号

这允许您分别从 PDF 或 gif 中选择特定的页面或帧。注意:索引从 0 开始。

水印

也可以称为“合成”。这会将一个图像调整到另一个图像的 98% 的大小,并将其贴在上面。如果您使用带有透明度的图像(就像我们一样),您将得到一个很棒的水印。

信息

Result->getExtra() 返回一个图像信息数组。这是一个“即时”操作。之后的操作将不会处理。

比较

Result->getExtra() 上返回一个浮点值或“inf”,并在 Result->getImage() 上返回一个具有比较结果的图像。这是一个“即时”操作。之后的操作将不会处理。

模糊/高斯模糊

通过半径和 sigma 模糊图像。模糊更快,高斯模糊更平滑。见: https://imagemagick.org.cn/Usage/blur/

质量

设置图像的输出质量。通常仅适用于有损格式如 JPEG。对于 PNG,它确定压缩。见: https://imagemagick.org.cn/script/command-line-options.php#quality

剥离

从图像中删除配置文件信息。见: https://imagemagick.org.cn/script/command-line-options.php#strip

添加配置文件,删除配置文件

向图像中添加或删除配置文件信息。AddProfile 期望一个文件名。RemoveProfile 期望一个配置文件名。见: https://imagemagick.org.cn/script/command-line-options.php#profile

$operation_builder->addProfile('RGB.icc')
    ->removeProfile('!exif,*')

尽管如此,请小心。每次使用这些方法都会导致图像在内存中从一种配置文件转换为另一种配置文件。仔细阅读文档!

色彩空间

定义与图像一起使用的色彩空间。最常见的色彩空间子集包含在 CommonOptions::COLOUR_SPACE_* 中。查看:https://imagemagick.org.cn/script/command-line-options.php#colorspace

$operation_builder->setColorSpace(CommonOptions::COLOUR_SPACE_RGB)

图像处理

所有处理都是在通过调用 Builder->finish() 构建命令之后进行的。如果提供了 Image 的子类,它将在其上调用 Image->setImageData()

即时操作

目前有两种“即时”操作:信息(Info)和比较(Compare)。由于返回信息的性质,继续处理没有意义。

单次操作

单次操作可以在请求操作时接受参数,而不是必须使用 ->next()。

// These two are exactly the same:

$operation_builder->format(CommonOptions::FORMAT_JPG)
    ->...;

$operation_builder->format()
    ->setFormat(CommonOptions::FORMAT_JPG)
    ->next()
    ->...;

质量、格式、添加配置文件、移除配置文件和剥离可以通过这种方式调用。

// Strip is called without parameters
$operation_builder->strip()->...;

注意事项

仅在命令行上工作

我们从未使用过 IMagick PECL 扩展。提供的实现完全是基于 CLI 的。当调用 Builder->finish() 时构建命令行,然后运行。

ImageMagick 版本

此库是在 Linux 上的 ImageMagick 6.7.7-10 Q16 上构建的。在比较不同版本的图像时,PHPUnit 测试可能会失败。对此进行改进以帮助解决这个问题将非常感激。

Windows 兼容性

它应该兼容 Windows,我们已经在 Windows 上进行了一小部分测试,并在代码中对其进行了少量修复。然而,不能保证它将在 Windows 上完美工作。

贡献

欢迎并鼓励提交拉取请求!我们知道还有许多尚未实现。