aiger-team/image-tools

基于不可变对象风格的轻量级图像编辑工具

v1.0.7 2017-01-02 12:14 UTC

This package is auto-updated.

Last update: 2024-09-04 14:54:37 UTC


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.31.1.5 是向后兼容的,但版本 1.1.31.2.1 可能不兼容。因此,我们建议您在 composer 配置中设置特定的次要版本,例如 ~1.0.7

许可

ImageTools 在 MIT 许可下授权。有关详细信息,请参阅 LICENSE 文件。