antey/image-slice

将图像切割成块件的库

1.0.1 2022-12-04 00:14 UTC

This package is auto-updated.

Last update: 2024-09-22 13:51:04 UTC


README

PHP库,用于将图像切割成块件。

tests workflow Coverage Status License: MIT Stand With Ukraine

设置

手动克隆仓库,或者通过composer

$ composer require antey/image-slice

需求

  • PHP版本:>= 7.4;
  • PHP扩展:gd.

依赖

此包使用php-image-resize

使用

有两种可用的切片类型 - 水平切片和垂直切片。在构造函数参数中为HorizontalImageSliceVerticalImageSlice传递宽度和高度(以像素为单位),以切片你想要的图像。

水平切片

use Antey\ImageSlice\HorizontalImageSlice;

$imageSlice = new HorizontalImageSlice(100, 100);
$slices = $imageSlice->slice(__DIR__ . '/example.jpeg');

此代码的结果是,我们的源图像将被切割成几个水平块件,并返回这些块件的路径。

垂直切片

use Antey\ImageSlice\VerticalImageSlice;

$imageSlice = new VerticalImageSlice(100, 100);
$slices = $imageSlice->slice(__DIR__ . '/example.jpeg');

此代码的结果是,我们的源图像将被切割成几个垂直块件,并返回这些块件的路径。

放大

默认情况下,如果源图像的分辨率低于预期(例如,原始图像为2000x500,而我们想要1000x1000的块件),结果块件的高度(或宽度,对于VerticalImageSlice)将与源图像相同,因此我们将得到两个1000x500的块件。

如果我们希望块件具有严格的大小,我们可以允许放大

$imageSlice->allowUpscale();

之后,对于之前的图像,源图像将被放大到4000x1000,然后才进行切片。结果,我们将得到四个1000x1000的块件。

最后一个切片

在大多数情况下,原始图像不能正好切割成块件。当我们尝试将2300x1000的图像切割成1000x1000的块件时,最后的部分(300px)将被忽略。

但如果我们希望保存这部分内容 - 我们需要允许保存最后一个块件

$imageSlice->allowLastSlide();

结果,我们将得到三个幻灯片 - 两个1000x1000的幻灯片,和一个300x1000的幻灯片。