Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Imagine Vips Laravel Package

rokka/imagine-vips

Libvips adapter for Imagine, offering fast, multi-threaded image processing with low memory use. Works via PHP FFI (recommended) or php-vips-ext, plus php-vips classes. Supports common Imagine operations like open, thumbnail, and save; vips 8.7+ recommended.

View on GitHub
Deep Wiki
Context7

libvips adapter for Imagine

Static analysis Latest Stable Version

This package provides a libvips integration for Imagine. The VIPS image processing system is a very fast, multi-threaded image processing library with low memory needs.

Version 8.7 or higher of libvips is highly recommended. paste and rotate by angles other than multipliers of 90 are not supported with older versions of libvips.

You either need the PHP FFI extension (recommended, since that's the currently supported way by the libvips maintainer) or the php-vips-ext extension version 1.0.8 or higher (you need to install that manually). And the php-vips classes (automatically installed by composer)

The most (to us at least) important stuff is implemented. There may be edge cases, which are not covered yet, but those will be hopefully fixed soon. Report them, if you encounter one.

Even it this is not a 1.0.0 release yet, the library is somehow battle tested as we use it on rokka.io.

Installation

Just run the following

composer require rokka/imagine-vips

and then you can use it like any other Imagine implementation with eg.

$imagine = new \Imagine\Vips\Imagine();

$size    = new Imagine\Image\Box(40, 40);
$mode    = Imagine\Image\ImageInterface::THUMBNAIL_INSET;

$imagine->open('/path/to/large_image.jpg')
    ->thumbnail($size, $mode)
    ->save('/path/to/thumbnail.png')

Missing stuff

Needs vips 8.6 or higher:

  • paste
  • rotate by angles other than multipliers of 90

Not implemented yet

  • Complete Drawer support, only text is.
  • Methods:
    • fill
    • histogram
  • Filters:
    • colorize

Most of them are not that important to us, so any contributions are welcome. Drawer for example may be a low hanging fruit, if you want to get into it.

Layers and Animated gifs

If you have vips 8.7.0, layers and animated gifs should work like with imagick.

Saving files

Natively supported by libvips for saving are jpg, png, webp and tiff. If you have vips 8.7.0 with imagemagick support, it will use vips "magicksave" for all other formats. It not, this adapter falls back to the Imagick or GD implementation.

Contribution

Any contribution is very appreciated, just file an issue or send a Pull Request.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
croct/coding-standard
croct/plug-php
nqxcode/phpmorphy
boundwize/pyrameter
testo/facade
headercat/phpstan-extension-ide-helper
yosymfony/parser-utils
innmind/black-box
babenkoivan/elastic-migrations
babenkoivan/elastic-adapter
develia/commons
dmstr/symfony-system-resources-bundle
cuci/prototurk-sdk
cuci/prototurk-sdk-symfony
renatomarinho/laravel-page-speed
develia/geo-bundle
austinheap/laravel-database-encryption
dreamzy/livewire-charts
touchestate-sdk/php-sdk
22h/doctrine-garbage-collection-bundle