X-Git-Url: http://www2.svjatoslav.eu/gitweb/?p=imagesqueeze.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fimagesqueeze%2Fcodec%2FImage.java;h=256ac268877267f09e1636d9cf202e6dc68f1001;hp=6ba0d1b257b394554956ce6510c60f5965c4b6a6;hb=7b3e2cbabc6df4010fb50b129933ad91ada21e62;hpb=4bcffe8896c08c9f60b2707da71bb39a64618d93 diff --git a/src/main/java/eu/svjatoslav/imagesqueeze/codec/Image.java b/src/main/java/eu/svjatoslav/imagesqueeze/codec/Image.java index 6ba0d1b..256ac26 100755 --- a/src/main/java/eu/svjatoslav/imagesqueeze/codec/Image.java +++ b/src/main/java/eu/svjatoslav/imagesqueeze/codec/Image.java @@ -9,128 +9,120 @@ 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(); + } }