Contact Contact Show All Awards & Recognition
Contact
Show All Awards & Recognition

Thumbnail

reviewed

last reviewed: 30.09.2021

Digital Asset Management

Author:

Basilicom

Version

v1.0.2

Last updated

Compatible Pimcore Version

>=5.4

Contact

https://basilicom.de/de/pimcore

Issues

https://github.com/basilicom/thumbnail-bundle/issues

1  Reviewer

reviewed on 30.09.2021

Thumbnail

Digital Asset Management

Project Summary

Enables asynchronous, worker based thumbnail creation. Adding a lot of high resolution images to a Pimcore system can cause high load situations. This is mitigated by deferring thumbnail creation via jobs. If a new asset is added to the system, the normal instant thumbnail generation is prevented and a default placeholder thumbnail is added instead. Simultaneously, a thumbnail creation job is added for the Symfony messenger component. Once the message is processed, the placeholder image is being replaced with the correct thumbnail.


Readme

Basilicom Thumbnail bundle for Pimcore

Enables asynchronous, worker based thumbnail creation.

Adding a lot of high resolution images to a Pimcore system can cause high load situations. This is mitigated by deferring thumbnail creation via jobs.

If a new asset is added to the system, the normal instant thumbnail generation is prevented and a default placeholder thumbnail is added instead. Simultaneously, a thumbnail creation job is added for the Symfony messenger component. Once the message is processed, the placeholder image is being replaced with the correct thumbnail.

License

GPLv3 - see: gpl-3.0.txt

Requirements

  • Pimcore >= 6.0.0
  • RabbitMQ if using the rabbitmq transport (for ampq on PHP 7.3 see: https://github.com/pdezwart/php-amqp/issues/337)
  • php-redis >= 4.3 if using the redis transport
  • redis server >= 4.3 if using the redis transport (needs XREADGROUP support)

Installation

1) Install the bundle using composer composer require basilicom/thumbnail-bundle. 3) Configure the bundle (see below) 2) Execute bin/console pimcore:bundle:enable BasilicomThumbnailBundle.

Configuration

0) As long as there is no patch preventing Pimcore from generating system thumbnails, change vendor/pimcore/pimcore/models/Asset/Image.php, in method update the line $path = $this->getThumbnail(Image\Thumbnail\Config::getPreviewConfig())->getFileSystemPath(); to $path = $this->getThumbnail(Image\Thumbnail\Config::getPreviewConfig())->getFileSystemPath(true); 1) Disable low quality preview generation:

    # app/config/config.yml
    pimcore:
        assets:
            image:
                low_quality_image_preview:
                   enabled: false

2) Configure the Symfony Messenger (see https://symfony.com/doc/current/messenger.html).

    # app/config/local/messenger.yaml
    framework:
        messenger:
            transports:
                #sample format:
                #async: "%env(MESSENGER_TRANSPORT_DSN)%"
                # sample redis transport, tested: 
                async: "redis://redis:6379/messages"
                #doctrine does not work on pimcore, as only dbal is loaded, not doctrine!
                #async: "doctrine://default"
                # sample rabbitmq, tested:
                #async: "amqp://rabbitmq:rabbitmq@rabbitmq:5672/%2f/messages"
            routing:
                # async is whatever name you gave your transport above
                'Basilicom\ThumbnailBundle\Message\ThumbnailJob':  async
            # The bus that is going to be injected when injecting MessageBusInterface
            default_bus: command.bus
            buses:
                command.bus:
                    middleware:
                        - validation

3) Process async messenges (jobs) via console (or supervisord, see: https://symfony.com/doc/current/messenger.html) add -vv to see individually processed messages

    bin/console messenger:consume

Configure additional thumbnail formats

If there is a text property thumbnailConfig on the asset (possibly inherited from a parent folder) containing a comma separated list of asset format names, thumbnails for these formats are going to be generated, too.

Configure thumbnail placeholders

@todo not implemented, yet

Review status

reviewed

last reviewed: 30.09.2021

?>

Author:

Basilicom

Version

v1.0.2

Last updated

Compatible Pimcore Version

>=5.4

Contact

https://basilicom.de/de/pimcore

Issues

https://github.com/basilicom/thumbnail-bundle/issues

1  Reviewer

reviewed on 30.09.2021