aiger-team / image-tools
基于不可变对象风格的轻量级图像编辑工具
v1.0.7
2017-01-02 12:14 UTC
Requires
- php: >=5.3
README
PHP的一个简单图像编辑工具。它使用不可变对象风格。这意味着图像对象在创建后不能被更改,任何修改图像对象的修改方法的结果都是一个新的图像对象。
安装
Composer
将此添加到 composer.json
文件中
"require": { "aiger-team/image-tools": "~1.0.7" }
然后调用
composer install
或者使用 composer require 命令
composer require aiger-team/image-tools
手动
从 GitHub 下载文件,将它们放到您的代码目录中,并在 PHP 代码中引入它们。
示例
调整图像大小
use AigerTeam\ImageTools\ImageFactory; (new ImageFactory()) ->openFile('image.jpg') ->resize(600, 500) ->toFile('image-resized.jpg');
从上传的图像创建几个缩略图,并在其中一些上添加水印
use AigerTeam\ImageTools\ImageFactory; // List of thumb to create. The values are width, height and "put watermark?". $thumbsSizes = [ [150, 80, false], [300, 200, true], [500, 400, true] ]; // Open uploaded image and watermark image $factory = new ImageFactory(); $image = $factory->openFile($_FILES['image']['tmp_name']); $watermark = $factory->openFile('watermark.png'); // Make thumbs $thumbsFiles = array_map(function($size) use ($image, $watermark) { $thumb = $image->resize($size[0], $size[1], false, $image::SIZING_COVER); // Original $image is not modified so thumbs may be created in any order if ($size[2]) { $thumb = $thumb->stamp($watermark, 0.2); // Watermark size is relative, not pixel } return $thumb->toUncertainFile('uploads/thumbs'); // File name and format is set automatically }, $thumbSizes);
参考
没有方法会触发错误或警告。相反,方法会抛出异常。如果其中一些方法触发了错误,请 向我们报告。
创建图像对象
可以通过多种方式创建 Image
对象。
1. 使用 ImageFactory 对象的某个方法
use AigerTeam\ImageTools\ImageFactory; $factory = new ImageFactory(); $image = $factory->blank(100, 150);
有关更多详细信息和方法列表,请参阅 ImageFactory
类的 PHPDoc 代码。
2. 将 DG 图像资源传递给 Image 构造函数
use AigerTeam\ImageTools\Image; $resource = imagecreatetruecolor(100, 150); $image = new Image($resource);
传递给构造函数的资源成为 Image
对象自己的资源。因此,可以在构造函数内部修改资源,并且在 Image
对象销毁时自动销毁资源。
处理图像
Image
对象是不可变的。修改图像的 Image
方法返回一个新的对象或原始对象(如果没有修改)。所以这段代码是 不正确的
// WRONG! Don't do this or you will be fired. $image->resize(200, 150); $image->toFile('image.jpg');
这段代码是 正确的
// Variant 1 $image = $image->resize(200, 150); $image->toFile('image.jpg'); // Variant 2 $image ->resize(200, 150) ->toFile('image.jpg');
有关更多详细信息和方法列表,请参阅 Image
的 PHPDoc 代码。
版本兼容性
版本在次要版本内是向后兼容的。例如,版本 1.1.3
和 1.1.5
是向后兼容的,但版本 1.1.3
和 1.2.1
可能不兼容。因此,我们建议您在 composer 配置中设置特定的次要版本,例如 ~1.0.7
。
许可
ImageTools 在 MIT 许可下授权。有关详细信息,请参阅 LICENSE 文件。