Build your own Generator
Implement your own generator
To implement your own Generator, first check the code of the Generators included in the Media package.
Basically, you need to extend AbstractThumbnailGenerator
and implement the ThumbnailGeneratorInterface::refresh()
method. The refresh
method receives a Thumbnail
object, based on this object do the required processing to
generate a thumbnail. In most cases the Thumbnail can be persisted by attaching the new resource to the Thumbnail
object.
Determine if a Generator can handle the current Thumbnail
You can also implement the ThumbnailGeneratorInterface::canRefresh()
if your Generator has some specific
requirements (like maximum file size, MIME type, external service availability, etc.).
Priority
The ThumbnailGeneratorStrategy
choose the Generator by two factors, the value of the static property priority
and
the return value of the method ThumbnailGeneratorInterface::canRefresh()
. For priority value, higher is better:
class YourOwnThumbnailGenerator extends AbstractThumbnailGenerator
{
/**
* @var integer
* @api
*/
protected static $priority = 100;
}
You can always override this priority in your Settings.yaml
.
Configuration
In your generator class use the AbstractThumbnailGenerator::getOption()
to access your settings:
Neos:
Media:
thumbnailGenerators:
'Your\Package\Domain\Model\ThumbnailGenerator\YourOwnThumbnailGenerator':
priority: 100
parameterOne: 100
parameterTwo: 200
Remember to add the Media Package in your package composer.json`
to load the Media package before your own:
{
...
"require": {
"neos/flow": "*",
"neos/media": "*"
}
...
}
Community supported Generators
-
Can be use to integrate the service from filepreviews.io in your project and generate thumbnail for Office or Audio documents.
Feel free to contact us at hello@neos.io, if you publish some Generators under an open-source licence.