maagi / imagine-focalresizer
Imagine 的焦点调整大小
0.2.0
2016-03-07 09:01 UTC
Requires
- imagine/imagine: ~0.2
This package is not auto-updated.
Last update: 2024-09-18 18:47:47 UTC
README
#ImagineFocalResizer
一个为 PHP 的 Imagine 图像处理库创建的工具,用于使用中心“焦点”调整图像实例的大小。图像将被裁剪,以确保焦点始终位于调整大小后的图像内。这允许创建适用于不同屏幕大小的版本,同时保持“响应式裁剪”。
由 x 和 y 坐标定义的焦点,范围从左上角(-1,1)到右下角(1,-1)。图像中心位于(0,0)。
注意:版本 0.2.0 中 y 轴已被翻转,以便顶部边缘为 1,底部边缘为 -1。
这个想法来自 Jono Menz 的 jQuery FocusPoint 插件。其 文档 说明了这种方法的工作原理。
##安装##
使用 Composer 进行安装。
$ composer require maagi/imagine-focalresizer
##使用##
use Imagine\Gd\Imagine; // or Imagick/Gmagick
use Imagine\Image\ImageInterface;
use Imagine\Image\Box;
use Maagi\ImagineFocalResizer\Resizer;
use Maagi\ImagineFocalResizer\FocalPoint;
$imagine = new Imagine();
$image = $imagine->open('dragonfly.jpg');
$resizer = new Resizer();
$resizer->resize(
$image,
// target size
new Box(100, 200),
// crop around the point at 50% to the right and 70% to the top
new FocalPoint(0.5, 0.7),
// Imagine filter for resize (optional)
ImageInterface::FILTER_UNDEFINED
);
// maybe do further processing with the image...
$image->save('dragonfly-resized.jpg');
##工作原理##
这里使用的裁剪策略非常简单。它只是比较原始大小和目标大小的高度和宽度比率。焦点将位于裁剪中心的轴上,其比率较大,而另一个轴将保持未裁剪。如果裁剪区域的一部分超出了图像的边缘,它将被相应地移动。
##贡献##
我知道还有其他裁剪策略,其中一些在某些场景下比其他策略更适合。请提出其他(更好的)方法来做这件事。然后将逻辑提取到几个策略类中,并让用户决定使用哪个。