image --load now store the file as is
[jvcard.git] / src / be / nikiroo / jvcard / resources / StringUtils.java
index 2009dce628ef48864d48cf51c31bab5e6eae9813..1772bdfdb19582bd729cdc63e946e54d9a2705f9 100644 (file)
@@ -1,5 +1,13 @@
 package be.nikiroo.jvcard.resources;
 
+import java.awt.Image;
+import java.awt.image.BufferedImage;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
 import java.text.Normalizer;
@@ -9,6 +17,9 @@ import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.regex.Pattern;
 
+import javax.imageio.ImageIO;
+import javax.xml.bind.DatatypeConverter;
+
 import com.googlecode.lanterna.gui2.LinearLayout.Alignment;
 
 public class StringUtils {
@@ -49,7 +60,7 @@ public class StringUtils {
         */
        static public String padString(String text, int width, boolean cut,
                        Alignment align) {
-               
+
                if (width >= 0) {
                        if (text == null)
                                text = "";
@@ -172,6 +183,83 @@ public class StringUtils {
                }
        }
 
+       /**
+        * Convert the given {@link Image} object into a Base64 representation of
+        * the same {@link Image}. object.
+        * 
+        * @param image
+        *            the {@link Image} object to convert
+        * 
+        * @return the Base64 representation
+        * 
+        * @throws IOException
+        *             in case of IO error
+        */
+       static public String fromImage(BufferedImage image) throws IOException {
+               String imageString = null;
+               ByteArrayOutputStream out = new ByteArrayOutputStream();
+
+               ImageIO.write(image, "jpeg", out);
+               byte[] imageBytes = out.toByteArray();
+
+               imageString = DatatypeConverter.printBase64Binary(imageBytes);
+
+               out.close();
+
+               return imageString;
+       }
+
+       /**
+        * Convert the given {@link File} image into a Base64 representation of the
+        * same {@link File}.
+        * 
+        * @param file
+        *            the {@link File} image to convert
+        * 
+        * @return the Base64 representation
+        * 
+        * @throws IOException
+        *             in case of IO error
+        */
+       static public String fromImage(File file) throws IOException {
+               String fileString = null;
+               ByteArrayOutputStream out = new ByteArrayOutputStream();
+
+               byte[] buf = new byte[8192];
+               InputStream in = new FileInputStream(file);
+
+               int c = 0;
+               while ((c = in.read(buf, 0, buf.length)) > 0) {
+                       out.write(buf, 0, c);
+               }
+               out.flush();
+               in.close();
+
+               fileString = DatatypeConverter.printBase64Binary(out.toByteArray());
+               out.close();
+
+               return fileString;
+       }
+
+       /**
+        * Convert the given Base64 representation of an image into an {@link Image}
+        * object.
+        * 
+        * @param b64data
+        *            the {@link Image} in Base64 format
+        * 
+        * @return the {@link Image} object
+        * 
+        * @throws IOException
+        *             in case of IO error
+        */
+       static public BufferedImage toImage(String b64data) throws IOException {
+               BufferedImage image = ImageIO.read(new ByteArrayInputStream(
+                               DatatypeConverter.parseBase64Binary(b64data)));
+               image.toString();
+               return image;
+       }
+
        /**
         * Return a hash of the given {@link String}.
         *