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.
You can also implement the ThumbnailGeneratorInterface::canRefresh()
if your Generator has some specific requirements (like maximum file size, MIME type, external service availability, etc.).
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
.
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": "*"
}
...
}
-
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.