Search in sources :

Example 21 with Layer

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;
}
Also used : Node(javax.jcr.Node) Resource(org.apache.sling.api.resource.Resource) Layer(com.day.image.Layer) Property(javax.jcr.Property) Session(javax.jcr.Session)

Example 22 with 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();
    }
}
Also used : Rendition(com.day.cq.dam.api.Rendition) WorkflowHelper(com.adobe.acs.commons.util.WorkflowHelper) IIOException(javax.imageio.IIOException) IOException(java.io.IOException) IIOException(javax.imageio.IIOException) PrefixRenditionPicker(com.day.cq.dam.commons.util.PrefixRenditionPicker) Layer(com.day.image.Layer)

Example 23 with Layer

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;
}
Also used : Color(java.awt.Color) Dimension(java.awt.Dimension) Layer(com.day.image.Layer)

Example 24 with Layer

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;
}
Also used : Layer(com.day.image.Layer)

Example 25 with Layer

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;
}
Also used : Layer(com.day.image.Layer) BufferedImage(java.awt.image.BufferedImage)

Aggregations

Layer (com.day.image.Layer)29 ValueMap (org.apache.sling.api.resource.ValueMap)10 Test (org.junit.Test)10 ValueMapDecorator (org.apache.sling.api.wrappers.ValueMapDecorator)9 InputStream (java.io.InputStream)5 Resource (org.apache.sling.api.resource.Resource)4 Rendition (com.day.cq.dam.api.Rendition)3 Color (java.awt.Color)3 ByteArrayOutputStream (java.io.ByteArrayOutputStream)3 Asset (com.day.cq.dam.api.Asset)2 SuppressFBWarnings (edu.umd.cs.findbugs.annotations.SuppressFBWarnings)2 BufferedImage (java.awt.image.BufferedImage)2 ByteArrayInputStream (java.io.ByteArrayInputStream)2 MockSlingHttpServletRequest (org.apache.sling.testing.mock.sling.servlet.MockSlingHttpServletRequest)2 MockSlingHttpServletResponse (org.apache.sling.testing.mock.sling.servlet.MockSlingHttpServletResponse)2 NamedImageTransformer (com.adobe.acs.commons.images.NamedImageTransformer)1 WorkflowHelper (com.adobe.acs.commons.util.WorkflowHelper)1 AbstractImageTest (com.adobe.cq.wcm.core.components.internal.models.v1.AbstractImageTest)1 DownloadResource (com.day.cq.commons.DownloadResource)1 ImageResource (com.day.cq.commons.ImageResource)1