Moved to java 1.8. Code cleanup and formatting.
[imagesqueeze.git] / src / main / java / eu / svjatoslav / imagesqueeze / codec / Image.java
index 6ba0d1b..256ac26 100755 (executable)
 
 package eu.svjatoslav.imagesqueeze.codec;
 
-import java.awt.image.BufferedImage;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
 import eu.svjatoslav.commons.data.BitInputStream;
 import eu.svjatoslav.commons.data.BitOutputStream;
 
+import java.awt.image.BufferedImage;
+import java.io.*;
+
 /**
  * Main class representing compressed image.
  */
 
 public class Image {
 
-       public ImageMetaData metaData;
-
-       public BufferedImage bufferedImage;
-
-       ImageEncoder encoder;
+    public ImageMetaData metaData;
 
-       public Image() {
-       };
+    public BufferedImage bufferedImage;
 
-       /**
-        * Initialize imagesqueeze image based on {@link BufferedImage}.
-        * {@link BufferedImage} must be of type BufferedImage.TYPE_3BYTE_BGR .
-        */
-       public Image(final BufferedImage image) {
+    private ImageEncoder encoder;
 
-               bufferedImage = image;
-               metaData = new ImageMetaData();
+    public Image() {
+    }
 
-               metaData.version = 1;
-               metaData.width = image.getWidth();
-               metaData.height = image.getHeight();
-       }
+    /**
+     * Initialize imagesqueeze image based on {@link BufferedImage}.
+     * {@link BufferedImage} must be of type BufferedImage.TYPE_3BYTE_BGR .
+     */
+    public Image(final BufferedImage image) {
 
-       /**
-        * Initialize empty imagesqueeze image.
-        */
-       public Image(final int width, final int height) {
+        bufferedImage = image;
+        metaData = new ImageMetaData();
 
-               bufferedImage = new BufferedImage(width, height,
-                               BufferedImage.TYPE_3BYTE_BGR);
-               metaData = new ImageMetaData();
+        metaData.version = 1;
+        metaData.width = image.getWidth();
+        metaData.height = image.getHeight();
+    }
 
-               metaData.version = 1;
-               metaData.width = width;
-               metaData.height = height;
-       }
+    /**
+     * Initialize empty imagesqueeze image.
+     */
+    public Image(final int width, final int height) {
 
-       /**
-        * Load ImgSqz image from {@link File}.
-        */
-       public void loadImage(final File source) throws IOException {
+        bufferedImage = new BufferedImage(width, height,
+                BufferedImage.TYPE_3BYTE_BGR);
+        metaData = new ImageMetaData();
 
-               final byte[] fileContent = new byte[(int) source.length()];
+        metaData.version = 1;
+        metaData.width = width;
+        metaData.height = height;
+    }
 
-               final FileInputStream fileInputStream = new FileInputStream(source);
+    /**
+     * Load ImgSqz image from {@link File}.
+     */
+    public void loadImage(final File source) throws IOException {
 
-               fileInputStream.read(fileContent);
+        final byte[] fileContent = new byte[(int) source.length()];
 
-               fileInputStream.close();
+        try (FileInputStream fileInputStream = new FileInputStream(source)) {
+            if (fileInputStream.read(fileContent) != fileContent.length)
+                throw new RuntimeException("Failed to read file content");
+        }
 
-               final ByteArrayInputStream inputStream = new ByteArrayInputStream(
-                               fileContent);
+        final ByteArrayInputStream inputStream = new ByteArrayInputStream(
+                fileContent);
 
-               loadImage(inputStream);
-       }
+        loadImage(inputStream);
+    }
 
-       /**
-        * Load ImgSqz image from {@link InputStream}.
-        */
-       public void loadImage(final InputStream source) throws IOException {
-               final BitInputStream bitInputStream = new BitInputStream(source);
+    /**
+     * Load ImgSqz image from {@link InputStream}.
+     */
+    public void loadImage(final InputStream source) throws IOException {
+        final BitInputStream bitInputStream = new BitInputStream(source);
 
-               metaData = new ImageMetaData();
-               metaData.load(bitInputStream);
+        metaData = new ImageMetaData();
+        metaData.load(bitInputStream);
 
-               bufferedImage = new BufferedImage(metaData.width, metaData.height,
-                               BufferedImage.TYPE_3BYTE_BGR);
+        bufferedImage = new BufferedImage(metaData.width, metaData.height,
+                BufferedImage.TYPE_3BYTE_BGR);
 
-               final ImageDecoder imageDecoder = new ImageDecoder(this, bitInputStream);
+        final ImageDecoder imageDecoder = new ImageDecoder(this, bitInputStream);
 
-               imageDecoder.decode();
-       }
+        imageDecoder.decode();
+    }
 
-       /**
-        * Save image into ImgSqz file format.
-        */
-       public void saveImage(final File file) throws IOException {
-               final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
-               saveImage(outputStream);
+    /**
+     * Save image into ImgSqz file format.
+     */
+    public void saveImage(final File file) throws IOException {
+        final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+        saveImage(outputStream);
 
-               final byte[] buffer = outputStream.toByteArray();
-               final FileOutputStream fileOutputStream = new FileOutputStream(file);
-               fileOutputStream.write(buffer);
-               fileOutputStream.close();
-       }
+        final byte[] buffer = outputStream.toByteArray();
+        try (FileOutputStream fileOutputStream = new FileOutputStream(file)) {
+            fileOutputStream.write(buffer);
+        }
+    }
 
-       /**
-        * Save image into ImgSqz file format.
-        */
-       public void saveImage(final OutputStream outputStream) throws IOException {
+    /**
+     * Save image into ImgSqz file format.
+     */
+    private void saveImage(final OutputStream outputStream) throws IOException {
 
-               final BitOutputStream bitOutputStream = new BitOutputStream(
-                               outputStream);
+        final BitOutputStream bitOutputStream = new BitOutputStream(
+                outputStream);
 
-               metaData.save(bitOutputStream);
+        metaData.save(bitOutputStream);
 
-               if (encoder == null) {
-                       encoder = new ImageEncoder(this);
-               }
+        if (encoder == null) {
+            encoder = new ImageEncoder(this);
+        }
 
-               encoder.encode(bitOutputStream);
+        encoder.encode(bitOutputStream);
 
-               bitOutputStream.finishByte();
-       }
+        bitOutputStream.finishByte();
+    }
 
 }