Also for custom thumbnail we can use RenditionMaker or Asset Handler.
By RenditionMaker, we can associate an Asset "X" with Asset "Y" as a thumbnail.
// Create the Rendition Template for thumbnail
RenditionTemplate[] templates = createRenditionTemplates(tempThumbnailAsset);
// Generate thumbnail
renditionMaker.generateRenditions(asset, templates);
private RenditionTemplate[] createRenditionTemplates(Asset tempThumbnailAsset) {
ThumbnailConfig[] thumbnails = new ThumbnailConfig[1];
ThumbnailConfig thumbnail = new ThumbnailConfigImpl(48,48,false);
RenditionTemplate[] templates = new RenditionTemplate[thumbnails.length];
for (int i = 0; i < thumbnails.length; i++) {
ThumbnailConfig thumb = thumbnails[i];
templates[i] = renditionMaker.createThumbnailTemplate(tempThumbnailAsset,thumb.getWidth(),
thumb.getHeight(),thumb.doCenter());
}
return templates;
}