All Projects → tzsk → collage

tzsk / collage

Licence: MIT license
Generate Image Collage with PHP and Laravel

Programming Languages

PHP
23972 projects - #3 most used programming language

Projects that are alternatives of or similar to collage

querydumper
Laravel package to dump all running queries on the page.
Stars: ✭ 24 (-65.71%)
Mutual labels:  composer, laravel-5-package
video-downloader
Video Downloader for Facebook.
Stars: ✭ 63 (-10%)
Mutual labels:  composer, laravel-5-package
Base62
PHP Base62 encoder and decoder for integers and big integers with Laravel 5 support.
Stars: ✭ 16 (-77.14%)
Mutual labels:  composer, laravel-5-package
Jwt Auth Guard
JWT Auth Guard for Laravel and Lumen Frameworks.
Stars: ✭ 319 (+355.71%)
Mutual labels:  composer, laravel-5-package
Larrock Core
Core components for LarrockCMS
Stars: ✭ 46 (-34.29%)
Mutual labels:  composer, laravel-5-package
Laravel Database Encryption
A package for automatically encrypting and decrypting Eloquent attributes in Laravel 5.5+, based on configuration settings.
Stars: ✭ 238 (+240%)
Mutual labels:  composer, laravel-5-package
LaravelFtp
Laravel FTP client
Stars: ✭ 15 (-78.57%)
Mutual labels:  composer, laravel-5-package
Laravel Server Monitor
Server Monitoring Command for Laravel Applications
Stars: ✭ 424 (+505.71%)
Mutual labels:  composer, laravel-5-package
Ip Location Zh
获取 IP 地址的真实地理位置
Stars: ✭ 556 (+694.29%)
Mutual labels:  composer, laravel-5-package
Telegram Bot Sdk
🤖 Telegram Bot API PHP SDK. Lets you build Telegram Bots easily! Supports Laravel out of the box.
Stars: ✭ 2,212 (+3060%)
Mutual labels:  composer, laravel-5-package
image-collage-maker
A photo mosaic (pixel collage) maker. Use all your friends' profile pictures to approximate your profile picture! 如何用 Python 制作一个炫酷的微信好友图
Stars: ✭ 72 (+2.86%)
Mutual labels:  collage, collage-maker
BDLocation
A PHP interface to access Locations of Bangladesh
Stars: ✭ 24 (-65.71%)
Mutual labels:  composer
erdiko
Micro MVC Framework
Stars: ✭ 36 (-48.57%)
Mutual labels:  composer
phpPgAdmin6
PHP7+ Based administration tool for PostgreSQL 9.3+
Stars: ✭ 45 (-35.71%)
Mutual labels:  composer
alpine-php-fpm
Lightweight and optimised PHP-FPM (PHP 7.4, 8.0, 8.1) Docker images with essential extensions on top of latest Alpine Linux.
Stars: ✭ 53 (-24.29%)
Mutual labels:  composer
phpcrawl
Copy of http://phpcrawl.cuab.de/ for using with composer
Stars: ✭ 58 (-17.14%)
Mutual labels:  composer
magic-box
A magical implementation of Laravel's Eloquent models as injectable, masked resource repositories.
Stars: ✭ 46 (-34.29%)
Mutual labels:  laravel-5-package
composer-repl
A REPL for PHP built into Composer (using PsySH)
Stars: ✭ 81 (+15.71%)
Mutual labels:  composer
prediction-builder
A library for machine learning that builds predictions using a linear regression.
Stars: ✭ 107 (+52.86%)
Mutual labels:  composer
app
Aplus Framework App Project
Stars: ✭ 338 (+382.86%)
Mutual labels:  composer

🎁 PHP Collage Maker

Collage Cover Image

GitHub License Latest Version on Packagist GitHub Tests Action Status Total Downloads

Create Image Collage with ease now with PHP. This package uses intervention/image package to leverage image manipulation.

Using this package is very easy and creating Beautiful Collages are not tough anymore.

NOTE: Currently this package only supports 4 images. You can write your own generator to add 5 if you like.

📦 Installation

This is a composer package. So just run the below composer command inside your project directory to get it installed.

composer require tzsk/collage

⚙️ Configure

If you are using this package outside laravel then you don't need to do this step.

config/app.php

This package supports Package Auto-Discovery. And the latest version only supports Laravel >= 7.x

If you want to use any other driver besides 'gd' then you have to publish the configuration file:

php artisan collage:publish

You will then have a file in your config directory: config/collage.php

If you are using 'imagick' then you can change it.

🔥 Usage

First you need to have a set of images to make collage of. This package can except many kinds of Targets.

$images = [
    // List of images
    'images/some-image.jpg',
];

There are other kinds of image targets supported:

$images = [
    // 1. File Contents
    file_get_contents('some/image/path/or/url'),

    // 2. Direct URLs
    'https://some/image/url',

    // 3. Absolute & Relative Path
    '/some/image/somewhere/on/disk',

    // 4. Intervention\Image\Image Object
    ImageManagerStatic::make('...'),
    // It's Intervention\Image\ImageManagerStatic

    // 5. Or if you are Using Laravel
    Image::make('...'),
    // It's Intervention\Image\Facades\Image
];

Depending upon the number of images in the array this package will automatically use the right Generator.

🌐 Examples Outside Laravel

Firstly, use the Class Namespace at the top.

use Tzsk\Collage\MakeCollage;

$collage = new MakeCollage($driver); // Default: 'gd'

The Driver is either 'gd' or 'imagick'. Depending upon which library you are using with PHP. You can customize that. The default is 'gd'.

Create collage with 1 Image

Supported, yes.

$image = $collage->make(400, 400)->from($images);

// Add Padding:
$image = $collage->make(400, 400)->padding(10)->from($images);

// Add Background Color:
$image = $collage->make(400, 400)->padding(10)->background('#000')->from($images);

Create collage with 2 images

$image = $collage->make(400, 400)->from($images); // Default Alignment: vertical

// Change Alignment:
$image = $collage->make(400, 400)->from($images, function($alignment) {
    $alignment->vertical(); // Default, no need to have the Closure at all.
    // OR...
    $alignment->horizontal();
});

You can also add padding() and background() here.

Create collage with 3 images

$image = $collage->make(400, 400)->from($images); // Default Alignment: twoTopOneBottom

// Change Alignment:
$image = $collage->make(400, 400)->from($images, function($alignment) {
    $alignment->twoTopOneBottom(); // Default, no need to have the Closure at all.
    // OR...
    $alignment->oneTopTwoBottom();
    // OR...
    $alignment->oneLeftTwoRight();
    // OR...
    $alignment->twoLeftOneRight();
    // OR...
    $alignment->vertical();
    // OR...
    $alignment->horizontal();
});

You can also add padding() and background() here.

Create collage with 4 images

$image = $collage->make(400, 400)->from($images); // Default Alignment: grid

// Change Alignment:
$image = $collage->make(400, 400)->from($images, function($alignment) {
    $alignment->grid(); // Default, no need to have the Closure at all.
    // OR...
    $alignment->vertical();
    // OR...
    $alignment->horizontal();
});

You can also add padding() and background() here.

😍 Examples in Laravel

In laravel you already have the Alias for the Collage Maker

use Tzsk\Collage\Facade\Collage;

$image = Collage::make(400, 400)->from($images);

The rest of the Features are same as when using in normal php.

Create collage with 1 Image

$image = Collage::make(400, 400)->from($images);

// Add Padding:
$image = Collage::make(400, 400)->padding(10)->from($images);

// Add Background Color:
$image = Collage::make(400, 400)->padding(10)->background('#000')->from($images);

Create collage with 2 images

$image = Collage::make(400, 400)->from($images); // Default Alignment: vertical

// Change Alignment:
$image = Collage::make(400, 400)->from($images, function($alignment) {
    $alignment->vertical(); // Default, no need to have the Closure at all.
    // OR...
    $alignment->horizontal();
});

You can also add padding() and background() here.

Create collage with 3 images

$image = Collage::make(400, 400)->from($images); // Default Alignment: twoTopOneBottom

// Change Alignment:
$image = Collage::make(400, 400)->from($images, function($alignment) {
    $alignment->twoTopOneBottom(); // Default, no need to have the Closure at all.
    // OR...
    $alignment->oneTopTwoBottom();
    // OR...
    $alignment->oneLeftTwoRight();
    // OR...
    $alignment->twoLeftOneRight();
    // OR...
    $alignment->vertical();
    // OR...
    $alignment->horizontal();
});

You can also add padding() and background() here.

Create collage with 4 images

$image = Collage::make(400, 400)->from($images); // Default Alignment: grid

// Change Alignment:
$image = Collage::make(400, 400)->from($images, function($alignment) {
    $alignment->grid(); // Default, no need to have the Closure at all.
    // OR...
    $alignment->vertical();
    // OR...
    $alignment->horizontal();
});

You can also add padding() and background() here.

🏆 Return Value

The reaturned $image is the instance of Intervention\Image\Image object.

You can do multiple things with it.

  • You can save the final collage.
  • You can just use it as a plain response.
  • You can crop/resize/colorize and more.

Read more about what you can do in the Official Documentation.

🔌 Create Custom Generators

Creating a generator is very easy. Create a class that extends the abstract class: Tzsk\Collage\Contracts\CollageGenerator.

Example:

use Tzsk\Collage\Contracts\CollageGenerator;

class FiveImage extends CollageGenerator
{
    /**
     * @param Closure $closure
     * @return \Intervention\Image\Image
     */
    public function create($closure = null)
    {
        // Your code to generate the Intervention\Image\Image object
    }
}

NOTE: Take a look at src/Contracts/CollageGenerator.php for details about all the things you have access to in the generator class. Also, if you need a reference consider looking into: src/Generators/FourImage.php.

Extend outside laravel

$image = $collage->with([5 => Your\Class\Namespace\FiveImage::class]);
// Here the key is the number of file your generator accepts.
// After this you can continue chaining methods like ->padding()->from() as usual.

You can also override existing generators. Let's say you want to have the FourImage generator to behave differently. You can make your own MyFourImage class and add it.

$image = $collage->with([4 => Your\Class\Namespace\MyFourImage::class]);
// It will replace the existing Generator with your own.
// After this you can continue chaining methods like ->padding()->from() as usual.

Extend in laravel

$image = Collage::with([5 => Your\Class\Namespace\FiveImage::class]);
// Here the key is the number of file your generator accepts.
// After this you can continue chaining methods like ->padding()->from() as usual.

You can also override existing generators. Let's say you want to have the FourImage generator to behave differently. You can make your own MyFourImage class and add it.

$image = Collage::with([4 => Your\Class\Namespace\MyFourImage::class]);
// It will replace the existing Generator with your own.
// After this you can continue chaining methods like ->padding()->from() as usual.

You can also do this from the config/collage.php config file.

There is a generators array which is currently empty. You can add your own generators there like below to Replace or add new generators.

'generators' => [
    // It will replace the current FourImage generator.
    4 => Your\Class\Namespace\MyFourImage::class,

    // It will add a new generator.
    5 => Your\Class\Namespace\FiveImage::class,
]

🔬 Testing

composer test

📅 Changelog

Please see CHANGELOG for more information on what has changed recently.

❤️ Contributing

Please see CONTRIBUTING for details.

🔒 Security

If you discover any security related issues, please email [email protected] instead of using the issue tracker.

👑 Credits

👮‍♂️ License

The MIT License (MIT). Please see License File for more information.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].