use of com.adobe.acs.commons.images.NamedImageTransformer in project acs-aem-commons by Adobe-Consulting-Services.
the class NamedTransformImageServletTest method test_getImageTransformersWithParams.
@Test
public void test_getImageTransformersWithParams() {
List<NamedImageTransformer> selectedNamedImageTransformers = new ArrayList<NamedImageTransformer>();
selectedNamedImageTransformers.add(featureImageTransformer);
selectedNamedImageTransformers.add(smallImageTransformer);
final ValueMap imageTransformersWithParams = servlet.getImageTransformersWithParams(selectedNamedImageTransformers);
assertEquals(IMAGE_TRANSFORM_RESIZE, imageTransformersWithParams.keySet().toArray()[0]);
ValueMap resize = (ValueMap) imageTransformersWithParams.values().toArray()[0];
assertEquals("width", resize.keySet().toArray()[0]);
assertEquals("10", resize.values().toArray()[0]);
assertEquals(1, resize.keySet().size());
assertEquals(IMAGE_TRANSFORM_GREYSCALE, imageTransformersWithParams.keySet().toArray()[1]);
ValueMap greyscale = (ValueMap) imageTransformersWithParams.values().toArray()[1];
assertEquals("greyscale", greyscale.keySet().toArray()[0]);
assertEquals("true", greyscale.values().toArray()[0]);
}
use of com.adobe.acs.commons.images.NamedImageTransformer in project acs-aem-commons by Adobe-Consulting-Services.
the class NamedTransformImageServlet method doGet.
@Override
protected final void doGet(final SlingHttpServletRequest request, final SlingHttpServletResponse response) throws ServletException, IOException {
// Get the transform names from the suffix
final List<NamedImageTransformer> selectedNamedImageTransformers = getNamedImageTransformers(request);
// Collect and combine the image transformers and their params
final ValueMap imageTransformersWithParams = getImageTransformersWithParams(selectedNamedImageTransformers);
final Image image = this.resolveImage(request);
final String mimeType = this.getMimeType(request, image);
Layer layer = this.getLayer(image);
if (layer == null) {
response.setStatus(SlingHttpServletResponse.SC_NOT_FOUND);
return;
}
// Transform the image
layer = this.transform(layer, imageTransformersWithParams);
// Get the quality
final double quality = this.getQuality(mimeType, imageTransformersWithParams.get(TYPE_QUALITY, EMPTY_PARAMS));
// Check if the image is a JPEG which has to be encoded progressively
final boolean progressiveJpeg = isProgressiveJpeg(mimeType, imageTransformersWithParams.get(TYPE_PROGRESSIVE, EMPTY_PARAMS));
response.setContentType(mimeType);
if (progressiveJpeg) {
ProgressiveJpeg.write(layer, quality, response.getOutputStream());
} else {
layer.write(mimeType, quality, response.getOutputStream());
}
response.flushBuffer();
}
use of com.adobe.acs.commons.images.NamedImageTransformer in project acs-aem-commons by Adobe-Consulting-Services.
the class NamedTransformImageServletTest method test_multipleTransforms.
@Test
public void test_multipleTransforms() throws Exception {
List<NamedImageTransformer> selectedNamedImageTransformers = new ArrayList<NamedImageTransformer>();
selectedNamedImageTransformers.add(featureImageTransformer);
selectedNamedImageTransformers.add(smallImageTransformer);
final ValueMap imageTransformersWithParams = servlet.getImageTransformersWithParams(selectedNamedImageTransformers);
servlet.transform(mock(Layer.class), imageTransformersWithParams);
org.mockito.Mockito.verify(resizeImageTransformer, times(1)).transform(any(Layer.class), any(ValueMap.class));
org.mockito.Mockito.verify(greyscaleImageTransformer, times(1)).transform(any(Layer.class), any(ValueMap.class));
}
use of com.adobe.acs.commons.images.NamedImageTransformer in project acs-aem-commons by Adobe-Consulting-Services.
the class NamedTransformImageServlet method getNamedImageTransformers.
/**
* Gets the NamedImageTransformers based on the Suffix segments in order.
*
* @param request the SlingHttpServletRequest object
* @return a list of the NamedImageTransformers specified by the HTTP Request suffix segments
*/
protected final List<NamedImageTransformer> getNamedImageTransformers(final SlingHttpServletRequest request) {
final List<NamedImageTransformer> transformers = new ArrayList<NamedImageTransformer>();
String[] suffixes = PathInfoUtil.getSuffixSegments(request);
if (suffixes.length < 2) {
log.warn("Named Transform Image Servlet requires at least one named transform");
return transformers;
}
int endIndex = suffixes.length - 1;
// Its OK to check; the above check ensures there are 2+ segments
if (StringUtils.isNumeric(PathInfoUtil.getSuffixSegment(request, suffixes.length - 2))) {
endIndex--;
}
suffixes = (String[]) ArrayUtils.subarray(suffixes, 0, endIndex);
for (final String transformerName : suffixes) {
final NamedImageTransformer transformer = this.namedImageTransformers.get(transformerName);
if (transformer != null) {
transformers.add(transformer);
}
}
return transformers;
}