Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.figaf.utils
- import org.apache.camel.converter.stream.ByteArrayInputStreamCache
- import com.sap.gateway.ip.core.customdev.util.Message
- import static java.awt.RenderingHints.*
- import java.awt.image.BufferedImage
- import javax.imageio.ImageIO
- import org.imgscalr.Scalr
- import org.apache.camel.converter.stream.InputStreamCache
- def boolean isInteger(String str) {
- try {
- Integer.parseInt(str);
- } catch (NumberFormatException ex) {
- return false;
- } catch (NullPointerException ex) {
- return false;
- }
- return true;
- }
- def Message resizeImage(Message message) {
- def messageLog = messageLogFactory.getMessageLog(message)
- ByteArrayInputStream bais = null
- ByteArrayOutputStream baos = null
- try {
- def map = message.getHeaders()
- InputStreamCache body = message.getBody()
- baos = new ByteArrayOutputStream()
- body.writeTo(baos)
- baos.flush()
- def originalImageBytes = baos.toByteArray()
- baos.close();
- // messageLog.addAttachmentAsString("Original Image (base 64):", originalImageBytes.encodeBase64().toString(), "text/plain")
- bais = new ByteArrayInputStream(originalImageBytes)
- BufferedImage thumbnail = ImageIO.read(bais)
- if(!map.containsKey("size") ){
- throw new IllegalArgumentException("Header size is not defined");
- }
- if(!isInteger(map.get("size")) ){
- throw new IllegalArgumentException("Header size not an integer "+map.get("size"));
- }
- int size = Integer.parseInt(map.get("size"))
- int boundingBoxLeftTopCornerX = 0
- int boundingBoxLeftTopCornerY = 0
- if (thumbnail.getWidth() > thumbnail.getHeight()) {
- thumbnail = Scalr.resize(thumbnail, Scalr.Mode.FIT_TO_HEIGHT, size);
- boundingBoxLeftTopCornerX = thumbnail.getWidth() / 2 - size / 2
- } else {
- thumbnail = Scalr.resize(thumbnail, Scalr.Mode.FIT_TO_WIDTH, size);
- boundingBoxLeftTopCornerY = thumbnail.getHeight() / 2 - size / 2
- }
- thumbnail = Scalr.crop(thumbnail, boundingBoxLeftTopCornerX, boundingBoxLeftTopCornerY, size, size);
- baos = new ByteArrayOutputStream()
- ImageIO.write(thumbnail, 'png', baos)
- def scaledImageBytes = baos.toByteArray();
- messageLog.addAttachmentAsString("Resized Image (base 64):", scaledImageBytes.encodeBase64().toString(), "text/plain")
- message.setBody(new ByteArrayInputStreamCache(new ByteArrayInputStream(scaledImageBytes)))
- } finally {
- if (bais != null) {
- bais.close()
- }
- if (baos != null) {
- baos.close()
- }
- }
- return message
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement