use of com.day.image.Layer in project acs-aem-commons by Adobe-Consulting-Services.
the class AddWatermarkToRenditionProcess method processLayer.
@Override
protected Layer processLayer(Layer layer, Rendition rendition, WorkflowSession workflowSession, String[] args) {
final String watermarkPath = workflowHelper.getValuesFromArgs(ARG_WATERMARK, args).size() > 0 ? workflowHelper.getValuesFromArgs(ARG_WATERMARK, args).get(0) : null;
if (watermarkPath != null) {
Layer watermark = null;
try {
watermark = getLayer(watermarkPath, workflowSession);
if (watermark != null) {
addWatermark(layer, watermark);
}
} catch (LoginException e) {
log.error("Unable to log into repository.", e);
} finally {
if (watermark != null) {
watermark.dispose();
watermark = null;
}
}
} else {
log.info("No watermark specified. Skipping.");
}
return layer;
}
use of com.day.image.Layer in project acs-aem-commons by Adobe-Consulting-Services.
the class MatteRenditionProcess method processLayer.
@Override
protected Layer processLayer(Layer layer, Rendition rendition, WorkflowSession workflowSession, String[] args) {
final String dimensions = workflowHelper.getValuesFromArgs("dimension", args).size() > 0 ? workflowHelper.getValuesFromArgs("dimension", args).get(0) : null;
final String backgroundColor = workflowHelper.getValuesFromArgs("bgcolor", args).size() > 0 ? workflowHelper.getValuesFromArgs("bgcolor", args).get(0) : null;
final String verticalPositionArgument = workflowHelper.getValuesFromArgs("vpos", args).size() > 0 ? workflowHelper.getValuesFromArgs("vpos", args).get(0) : null;
final String horizontalPositionArgument = workflowHelper.getValuesFromArgs("hpos", args).size() > 0 ? workflowHelper.getValuesFromArgs("hpos", args).get(0) : null;
if (dimensions != null && backgroundColor != null) {
int width = getDimension(dimensions)[0];
int height = getDimension(dimensions)[1];
if (layer.getHeight() == height && layer.getWidth() == width) {
return layer;
}
Color matteColor = parseColor(backgroundColor, Color.BLACK);
Layer newLayer = new Layer(width, height, matteColor);
newLayer.setMimeType(rendition.getMimeType());
int topAnchor;
int leftAnchor;
VerticalPosition vpos = VerticalPosition.valueOf(verticalPositionArgument);
switch(vpos) {
case bottom:
topAnchor = newLayer.getHeight() - layer.getHeight();
break;
case middle:
topAnchor = (newLayer.getHeight() - layer.getHeight()) / 2;
break;
default:
topAnchor = 0;
break;
}
HoritzonalPosition hpos = HoritzonalPosition.valueOf(horizontalPositionArgument);
switch(hpos) {
case right:
leftAnchor = newLayer.getWidth() - layer.getWidth();
break;
case center:
leftAnchor = (newLayer.getWidth() - layer.getWidth()) / 2;
break;
default:
leftAnchor = 0;
break;
}
newLayer.blit(layer, leftAnchor, topAnchor, layer.getWidth(), layer.getHeight(), 0, 0);
return newLayer;
} else {
log.info("No dimension or background color specified. Skipping");
return layer;
}
}
use of com.day.image.Layer 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.day.image.Layer in project acs-aem-commons by Adobe-Consulting-Services.
the class MultiplyBlendImageTransformerImpl method transform.
@Override
public final Layer transform(final Layer layer, final ValueMap properties) {
if (properties == null || properties.isEmpty()) {
log.warn("Transform [ {} ] requires parameters.", TYPE);
return layer;
}
log.debug("Transforming with [ {} ]", TYPE);
float alpha = normalizeAlpha(properties.get(KEY_ALPHA, properties.get(KEY_ALPHA_ALIAS, 0.0)).floatValue());
Color color = getColor(properties);
Layer filter = new Layer(layer.getWidth(), layer.getHeight(), color);
BufferedImage image = merge(layer.getImage(), filter.getImage(), alpha);
Layer result = new Layer(image);
return result;
}
use of com.day.image.Layer in project aem-core-wcm-components by Adobe-Marketing-Cloud.
the class AdaptiveImageServletTest method testTransparentImage.
@Test
void testTransparentImage() throws IOException {
Pair<MockSlingHttpServletRequest, MockSlingHttpServletResponse> requestResponsePair = prepareRequestResponsePair(IMAGE29_PATH, 1607501105000L, "coreimg.80.1500", "jpeg");
MockSlingHttpServletRequest request = requestResponsePair.getLeft();
MockSlingHttpServletResponse response = requestResponsePair.getRight();
context.contentPolicyMapping(ImageImpl.RESOURCE_TYPE, Image.PN_DESIGN_ALLOWED_RENDITION_WIDTHS, new String[] { "1500" }, Image.PN_DESIGN_JPEG_QUALITY, 80);
servlet.doGet(request, response);
Assertions.assertEquals(HttpStatus.SC_OK, response.getStatus());
Layer responseImage = new Layer(new ByteArrayInputStream(response.getOutput()));
Assertions.assertEquals(1500, responseImage.getWidth());
for (int x = 0; x < responseImage.getWidth(); x++) {
for (int y = 0; y < responseImage.getHeight(); y++) {
Assertions.assertEquals(Color.white.getRGB(), responseImage.getPixel(x, y), "Expected white background");
}
}
}
Aggregations