use of com.day.image.Layer in project acs-aem-commons by Adobe-Consulting-Services.
the class SocialImageImpl method getLayer.
public Layer getLayer(boolean cropped, boolean resized, boolean rotated) throws IOException, RepositoryException {
Layer layer = null;
Session session = res.getResourceResolver().adaptTo(Session.class);
Resource contentRes = res.getChild(JcrConstants.JCR_CONTENT);
Node node = session.getNode(contentRes.getPath());
Property data = node.getProperty(JcrConstants.JCR_DATA);
if (data != null) {
layer = ImageHelper.createLayer(data);
if (layer != null && cropped) {
crop(layer);
}
if (layer != null && resized) {
resize(layer);
}
if (layer != null && rotated) {
rotate(layer);
}
}
return layer;
}
use of com.day.image.Layer in project acs-aem-commons by Adobe-Consulting-Services.
the class AbstractRenditionModifyingProcess method execute.
public final void execute(WorkItem workItem, WorkflowSession workflowSession, MetaDataMap metaData, WorkflowHelper workflowHelper) throws WorkflowException {
String[] args = workflowHelper.buildArguments(metaData);
final String renditionName = workflowHelper.getValuesFromArgs(ARG_RENDITION_NAME, args).size() > 0 ? workflowHelper.getValuesFromArgs(ARG_RENDITION_NAME, args).get(0) : null;
// image quality: from 0 t0 100%
final String qualityStr = workflowHelper.getValuesFromArgs(ARG_QUALITY, args).size() > 0 ? workflowHelper.getValuesFromArgs(ARG_QUALITY, args).get(0) : DEFAULT_QUALITY;
if (renditionName == null) {
log.warn("Rendition name was not configured in arguments. Skipping.");
return;
}
final WorkflowHelper.AssetResourceResolverPair pair = workflowHelper.getAssetFromPayload(workItem, workflowSession);
if (pair == null) {
return;
}
final Rendition rendition = pair.asset.getRendition(new PrefixRenditionPicker(renditionName));
if (rendition == null) {
log.warn("Rendition name {} was not available for asset {}. Skipping.", renditionName, pair.asset);
return;
}
Layer layer = null;
try {
layer = new Layer(rendition.getStream());
layer = processLayer(layer, rendition, workflowSession, args);
String mimetype = layer.getMimeType();
double quality = mimetype.equals("image/gif") ? workflowHelper.getQuality(MAX_GIF_QUALITY, qualityStr) : workflowHelper.getQuality(1.0, qualityStr);
saveImage(pair.asset, rendition, layer, mimetype, quality, workflowHelper);
} catch (IIOException e) {
log.warn("Unable to load image layer from " + rendition.getPath(), e);
} catch (IOException e) {
log.warn("Unable to load image layer from " + rendition.getPath(), e);
} finally {
if (layer != null) {
layer.dispose();
layer = null;
}
pair.resourceResolver.close();
}
}
use of com.day.image.Layer in project acs-aem-commons by Adobe-Consulting-Services.
the class LetterPillarBoxImageTransformerImpl 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);
Dimension newSize = getResizeDimensions(properties, layer);
Color color = getColor(properties);
Layer resized = resize(layer, newSize);
Layer result = build(newSize, resized, color);
return result;
}
use of com.day.image.Layer in project acs-aem-commons by Adobe-Consulting-Services.
the class LetterPillarBoxImageTransformerImpl method build.
/*
* Creates the actual pillar/letter boxing.
*/
private Layer build(Dimension size, Layer img, Color color) {
Layer merged = createLayer(size, color);
int startXpos = 0;
int startYpos = 0;
int imgHeight = img.getHeight();
int imgWidth = img.getWidth();
if (imgHeight == size.height) {
// Pillar
startXpos = calculateStartPosition(size.width, imgWidth);
} else if (imgWidth == size.width) {
// Letter
startYpos = calculateStartPosition(size.height, imgHeight);
}
merged.blit(img, startXpos, startYpos, imgWidth, imgHeight, 0, 0);
return merged;
}
use of com.day.image.Layer in project acs-aem-commons by Adobe-Consulting-Services.
the class RGBShiftImageTransformerImpl 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 red = normalizeRGB(properties.get(KEY_RED, properties.get(KEY_RED_ALIAS, DEFAULT_SHIFT_VALUE)).floatValue());
float green = normalizeRGB(properties.get(KEY_GREEN, properties.get(KEY_GREEN_ALIAS, DEFAULT_SHIFT_VALUE)).floatValue());
float blue = normalizeRGB(properties.get(KEY_BLUE, properties.get(KEY_BLUE_ALIAS, DEFAULT_SHIFT_VALUE)).floatValue());
int redShift = Math.round(red * MAX_COLOR_VALUE);
int greenShift = Math.round(green * MAX_COLOR_VALUE);
int blueShift = Math.round(blue * MAX_COLOR_VALUE);
BufferedImage image = shift(layer.getImage(), redShift, greenShift, blueShift);
Layer result = new Layer(image);
return result;
}
Aggregations