X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Futils%2FImage.java;h=4518577d640b684bee939381e02b9aa745b2d3a2;hb=f0b5b320b83d5ec6ba354f9f79058cb763dc0310;hp=3a89d29d4887e0121107871af39d660c4ca041c3;hpb=59864f77f0b8d5a57f479152a3131093544af6b2;p=fanfix.git diff --git a/src/be/nikiroo/utils/Image.java b/src/be/nikiroo/utils/Image.java deleted file mode 100644 index 3a89d29..0000000 --- a/src/be/nikiroo/utils/Image.java +++ /dev/null @@ -1,155 +0,0 @@ -package be.nikiroo.utils; - -import java.io.ByteArrayInputStream; -import java.io.Closeable; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; - -/** - * This class represents an image data. - * - * @author niki - */ -public class Image implements Closeable { - static private TempFiles tmpRepository; - static private long count = 0; - static private Object lock = new Object(); - - private File data; - - /** - * Do not use -- for serialisation purposes only. - */ - @SuppressWarnings("unused") - private Image() { - } - - /** - * Create a new {@link Image} with the given data. - * - * @param data - * the data - */ - public Image(byte[] data) { - ByteArrayInputStream in = new ByteArrayInputStream(data); - try { - this.data = getTemporaryFile(); - IOUtils.write(in, this.data); - } catch (IOException e) { - throw new RuntimeException(e); - } finally { - try { - in.close(); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - } - - /** - * Create a new {@link Image} from its Base64 representation. - * - * @param base64 - * the {@link Image} in Base64 format - * - * @throws IOException - * in case of I/O error - */ - public Image(String base64) throws IOException { - this(Base64.decode(base64)); - } - - /** - * Create a new {@link Image} from a stream. - * - * @param in - * the stream - * - * @throws IOException - * in case of I/O error - */ - public Image(InputStream in) throws IOException { - data = getTemporaryFile(); - IOUtils.write(in, data); - } - - /** - * Read the actual image data, as a byte array. - * - * @return the image data - */ - public byte[] getData() { - try { - FileInputStream in = new FileInputStream(data); - try { - return IOUtils.toByteArray(in); - } finally { - in.close(); - } - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - /** - * Convert the given {@link Image} object into a Base64 representation of - * the same {@link Image} object. - * - * @return the Base64 representation - */ - public String toBase64() { - return new String(Base64.encodeBytes(getData())); - } - - /** - * Closing the {@link Image} will delete the associated temporary file on - * disk. - *

- * Note that even if you don't, the program will still try to delete - * all the temporary files at JVM termination. - */ - @Override - public void close() throws IOException { - data.delete(); - synchronized (lock) { - count--; - if (count <= 0) { - count = 0; - tmpRepository.close(); - tmpRepository = null; - } - } - } - - @Override - protected void finalize() throws Throwable { - try { - close(); - } finally { - super.finalize(); - } - } - - /** - * Return a newly created temporary file to work on. - * - * @return the file - * - * @throws IOException - * in case of I/O error - */ - private File getTemporaryFile() throws IOException { - synchronized (lock) { - if (tmpRepository == null) { - tmpRepository = new TempFiles("images"); - count = 0; - } - - count++; - - return tmpRepository.createTempFile("image"); - } - } -}