public ImageContext createImageContext(Image image, boolean featured) { ImageContext context = new ImageContext( "/attachments/" + image.getAttachment().getSlug() + "." + image.getAttachment().getExtension()); context.setTitle(ContextUtils.safeString(image.getAttachment().getTitle())); context.setDescription(ContextUtils.safeString(image.getAttachment().getDescription())); context.put("featured", featured); context.put( "url", MessageFormat.format( "/images/{0}.{1}", image.getAttachment().getSlug(), image.getAttachment().getExtension())); if (theme != null && theme.getImageFormats().size() > 0) { for (String dimensionName : theme.getImageFormats().keySet()) { ImageFormatDefinition definition = theme.getImageFormats().get(dimensionName); Optional<Thumbnail> bestFit = findBestFit(image, definition.getWidth(), definition.getHeight()); if (bestFit.isPresent()) { String url = MessageFormat.format( "/images/thumbnails/{0}_{1,number,#}_{2,number,#}_{3,number,#}_{4,number,#}.{5}" + "?width={6,number,#}&height={7,number,#}", image.getAttachment().getSlug(), bestFit.get().getX(), bestFit.get().getY(), bestFit.get().getWidth(), bestFit.get().getHeight(), image.getAttachment().getExtension(), definition.getWidth(), definition.getHeight()); context.put("theme_" + dimensionName + "_url", url); } else { String url = MessageFormat.format( "/images/{0}.{1}?width={2,number,#}&height={3,number,#}", image.getAttachment().getSlug(), image.getAttachment().getExtension(), definition.getWidth(), definition.getHeight()); context.put("theme_" + dimensionName + "_url", url); } } } return context; }