antey/image-slice

Library for slicing image into a pieces

1.0.1 2022-12-04 00:14 UTC

This package is auto-updated.

Last update: 2024-04-22 13:01:17 UTC


README

PHP library to slice image into a pieces.

tests workflow Coverage Status License: MIT Stand With Ukraine

255326545-5ba49c73-049d-45c7-a392-5d00cef93c34.jpeg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTM3OTExNzcsIm5iZiI6MTcxMzc5MDg3NywicGF0aCI6Ii85NDMwMzEzLzI1NTMyNjU0NS01YmE0OWM3My0wNDlkLTQ1YzctYTM5Mi01ZDAwY2VmOTNjMzQuanBlZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA0MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNDIyVDEzMDExN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTA3ODk5MmNiNGZiZjZhZDQwNGE0N2M4NTk3MGQzYTEwMTg4MjQ0ZmMxN2M4ZDZiOWE1YjliODhmZGJiODhiODcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.sXLB7yDZmoJUHUMNT-u5xhnA1SRaJKVTqUspyxxL394

Setup

Manually by cloning repository, or via composer:

$ composer require antey/image-slice

Requirements

  • PHP version: >= 7.4;
  • PHP extensions: gd.

Dependencies

This package using php-image-resize

Usage

There is two available slice types - slice horizontal and slice vertical. As constructor parameters for HorizontalImageSlice and VerticalImageSlice take width and height (in pixels) pieces, for what you wish to slice image.

Horizontal slicing

use Antey\ImageSlice\HorizontalImageSlice;

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

As result of this code, our source image will be sliced into several horizontal pieces and paths of this pieces will be returned.

Vertical slicing

use Antey\ImageSlice\VerticalImageSlice;

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

As result of this code, our source image will be sliced into several vertical pieces and paths of this pieces will be returned.

Upscale

By default, in case when source image has lower resolution, than expected (for example, original image is 2000x500, and we want to get 1000x1000 pieces), result pieces will have height (or width, for VerticalImageSlice) same as source image, so we will get two 1000x500 slices.

If we wish to have strict size of pieces, we can allow upscale

$imageSlice->allowUpscale();

After that, in case of previous image, source image will be up-scaled to 4000x1000, and only after that sliced. As result, we will get four 1000x1000 slices.

Last slice

In most scenarios, original image cannot be sliced into pieces exactly. When we try to slice 2300x1000 image into 1000x1000 pieces, last part (300px) will be ignored.

But if we want to save this part also - then we need allow saving last piece:

$imageSlice->allowLastSlide();

As result, we will get three slides - two slides 1000x1000, and one slide 300x1000.