X-Git-Url: http://git.nikiroo.be/?p=nikiroo-utils.git;a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Futils%2FImage.java;h=cfcaa74e2c1b8e2f1cd280f687afbfd7e8ad51bf;hp=6edc1051ab7b910c0b47733407c99d804a08a8fe;hb=7b42695f536a88cfc5fed57e98687394e3c42fe9;hpb=f3502fbd11d357e1d33e2eb6fc6261df3cf26d09 diff --git a/src/be/nikiroo/utils/Image.java b/src/be/nikiroo/utils/Image.java index 6edc105..cfcaa74 100644 --- a/src/be/nikiroo/utils/Image.java +++ b/src/be/nikiroo/utils/Image.java @@ -76,14 +76,35 @@ public class Image implements Closeable { IOUtils.write(in, data); } + /** + * Generate an {@link InputStream} for this {@link Image}. + *

+ * This {@link InputStream} will (always) be a new one, and you are + * responsible for it. + *

+ * Note: take care that the {@link InputStream} must not live past + * the {@link Image} life time! + * + * @return the stream + * + * @throws IOException + * in case of I/O error + */ + public InputStream newInputStream() throws IOException { + return new FileInputStream(data); + } + /** * Read the actual image data, as a byte array. + *

+ * Note: if possible, prefer the {@link Image#newInputStream()} method, as + * it can be more efficient. * * @return the image data */ public byte[] getData() { try { - FileInputStream in = new FileInputStream(data); + InputStream in = newInputStream(); try { return IOUtils.toByteArray(in); } finally { @@ -97,11 +118,18 @@ public class Image implements Closeable { /** * Convert the given {@link Image} object into a Base64 representation of * the same {@link Image} object. + *

+ * Note: if possible, prefer the {@link Image#newInputStream()} method, as + * it can be more efficient. * * @return the Base64 representation */ public String toBase64() { - return Base64.encodeBytes(getData()); + try { + return StringUtils.base64(getData(), false); + } catch (IOException e) { + throw new RuntimeException(e); + } } /**