Advertisement
Guest User

Untitled

a guest
Mar 18th, 2019
541
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Groovy 2.81 KB | None | 0 0
  1. package com.figaf.utils
  2.  
  3. import org.apache.camel.converter.stream.ByteArrayInputStreamCache
  4. import com.sap.gateway.ip.core.customdev.util.Message
  5. import static java.awt.RenderingHints.*
  6. import java.awt.image.BufferedImage
  7. import javax.imageio.ImageIO
  8. import org.imgscalr.Scalr
  9. import org.apache.camel.converter.stream.InputStreamCache
  10.  
  11. def boolean isInteger(String str) {
  12.     try {
  13.         Integer.parseInt(str);
  14.     } catch (NumberFormatException ex) {
  15.         return false;
  16.     } catch (NullPointerException ex) {
  17.         return false;
  18.     }
  19.     return true;
  20. }
  21.  
  22.  
  23. def Message resizeImage(Message message) {
  24.  
  25.     def messageLog = messageLogFactory.getMessageLog(message)
  26.  
  27.     ByteArrayInputStream bais = null
  28.     ByteArrayOutputStream baos = null
  29.     try {
  30.        
  31.          def map = message.getHeaders()
  32.    
  33.        
  34.         InputStreamCache body = message.getBody()
  35.         baos = new ByteArrayOutputStream()
  36.         body.writeTo(baos)
  37.         baos.flush()
  38.         def originalImageBytes = baos.toByteArray()
  39.         baos.close();
  40.        
  41.      //   messageLog.addAttachmentAsString("Original Image (base 64):", originalImageBytes.encodeBase64().toString(), "text/plain")
  42.         bais = new ByteArrayInputStream(originalImageBytes)
  43.         BufferedImage thumbnail = ImageIO.read(bais)
  44.  
  45.         if(!map.containsKey("size") ){
  46.             throw new IllegalArgumentException("Header size is not defined");
  47.         }
  48.        
  49.        
  50.         if(!isInteger(map.get("size")) ){
  51.             throw new IllegalArgumentException("Header size not an integer "+map.get("size"));
  52.         }
  53.        
  54.         int size = Integer.parseInt(map.get("size"))
  55.        
  56.         int boundingBoxLeftTopCornerX = 0
  57.         int boundingBoxLeftTopCornerY = 0
  58.         if (thumbnail.getWidth() > thumbnail.getHeight()) {
  59.             thumbnail = Scalr.resize(thumbnail, Scalr.Mode.FIT_TO_HEIGHT, size);
  60.             boundingBoxLeftTopCornerX = thumbnail.getWidth() / 2 - size / 2
  61.         } else {
  62.             thumbnail = Scalr.resize(thumbnail, Scalr.Mode.FIT_TO_WIDTH, size);
  63.             boundingBoxLeftTopCornerY = thumbnail.getHeight() / 2 - size / 2
  64.         }
  65.         thumbnail = Scalr.crop(thumbnail, boundingBoxLeftTopCornerX, boundingBoxLeftTopCornerY, size, size);
  66.    
  67.  
  68.         baos = new ByteArrayOutputStream()
  69.         ImageIO.write(thumbnail, 'png', baos)
  70.         def scaledImageBytes = baos.toByteArray();
  71.  
  72.         messageLog.addAttachmentAsString("Resized Image (base 64):", scaledImageBytes.encodeBase64().toString(), "text/plain")
  73.         message.setBody(new ByteArrayInputStreamCache(new ByteArrayInputStream(scaledImageBytes)))
  74.     } finally {
  75.         if (bais != null) {
  76.             bais.close()
  77.         }
  78.         if (baos != null) {
  79.             baos.close()
  80.         }
  81.     }
  82.  
  83.     return message
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement