1 package eu.svjatoslav.imagesqueeze.codec;
3 import java.awt.image.BufferedImage;
4 import java.io.ByteArrayInputStream;
5 import java.io.ByteArrayOutputStream;
7 import java.io.FileInputStream;
8 import java.io.FileOutputStream;
9 import java.io.IOException;
10 import java.io.InputStream;
11 import java.io.OutputStream;
14 * Main class representing compressed image.
19 public ImageMetaData metaData;
21 public BufferedImage bufferedImage;
28 * Initialize imagesqueeze image based on {@link BufferedImage}. {@link BufferedImage} must be of type BufferedImage.TYPE_3BYTE_BGR .
30 public Image(BufferedImage image){
32 this.bufferedImage = image;
33 metaData = new ImageMetaData();
36 metaData.width = image.getWidth();
37 metaData.height = image.getHeight();
41 * Initialize empty imagesqueeze image.
43 public Image(int width, int height){
45 this.bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR);
46 metaData = new ImageMetaData();
49 metaData.width = width;
50 metaData.height = height;
54 * Load ImgSqz image from {@link InputStream}.
56 public void loadImage(InputStream source) throws IOException{
57 BitInputStream bitInputStream = new BitInputStream(source);
59 metaData = new ImageMetaData();
60 metaData.load(bitInputStream);
62 bufferedImage = new BufferedImage(metaData.width, metaData.height, BufferedImage.TYPE_3BYTE_BGR);
64 ImageDecoder imageDecoder = new ImageDecoder(this, bitInputStream);
66 imageDecoder.decode();
70 * Load ImgSqz image from {@link File}.
72 public void loadImage(File source) throws IOException{
74 byte [] fileContent = new byte[(int)source.length()];
76 FileInputStream fileInputStream = new FileInputStream(source);
78 fileInputStream.read(fileContent);
80 fileInputStream.close();
82 ByteArrayInputStream inputStream = new ByteArrayInputStream(fileContent);
84 loadImage(inputStream);
88 * Save image into ImgSqz file format.
90 public void saveImage(OutputStream outputStream) throws IOException{
92 BitOutputStream bitOutputStream = new BitOutputStream(outputStream);
94 metaData.save(bitOutputStream);
97 encoder = new ImageEncoder(this);
100 encoder.encode(bitOutputStream);
102 bitOutputStream.finishByte();
107 * Save image into ImgSqz file format.
109 public void saveImage(File file) throws IOException{
110 ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
111 saveImage(outputStream);
113 byte [] buffer = outputStream.toByteArray();
114 FileOutputStream fileOutputStream = new FileOutputStream(file);
115 fileOutputStream.write(buffer);
116 fileOutputStream.close();