javax.imageio.stream


  1. Reading an Image File into a Memory Buffer

    import javax.imageio.ImageIO;
    import javax.imageio.stream.ImageInputStream;
    
    public class ReadImageIntoMemory {
    
        public static void main(String[] args) throws IOException {
            // Read the image file into an ImageInputStream
            ImageInputStream iis = ImageIO.createImageInputStream(new File("image.png"));
    
            // Read the image data into a byte array
            byte[] imageData = new byte[iis.length()];
            iis.readFully(imageData);
    
            // Close the ImageInputStream
            iis.close();
    
            // Do something with the image data, such as display it in a GUI
            ...
        }
    }
  2. Writing an Image File from a Memory Buffer

    import javax.imageio.ImageIO;
    import javax.imageio.stream.ImageOutputStream;
    
    public class WriteImageFromMemory {
    
        public static void main(String[] args) throws IOException {
            // Create an ImageOutputStream to write the image data to
            ImageOutputStream ios = ImageIO.createImageOutputStream(new File("image.png"));
    
            // Write the image data to the ImageOutputStream
            ios.write(imageData);
    
            // Close the ImageOutputStream
            ios.close();
        }
    }
  3. Streaming an Image File over a Network

    import javax.imageio.ImageIO;
    import javax.imageio.stream.ImageInputStream;
    import javax.imageio.stream.ImageOutputStream;
    import java.io.IOException;
    import java.net.Socket;
    
    public class StreamImageOverNetwork {
    
        public static void main(String[] args) throws IOException {
            // Create a socket to connect to the remote host
            Socket socket = new Socket("remotehost", port);
    
            // Get the input and output streams from the socket
            ImageInputStream iis = ImageIO.createImageInputStream(socket.getInputStream());
            ImageOutputStream ios = ImageIO.createImageOutputStream(socket.getOutputStream());
    
            // Read the image data from the input stream
            byte[] imageData = new byte[iis.length()];
            iis.readFully(imageData);
    
            // Write the image data to the output stream
            ios.write(imageData);
    
            // Close the input and output streams
            iis.close();
            ios.close();
    
            // Close the socket
            socket.close();
        }
    }
  4. Creating a Custom Image Reader

    import javax.imageio.ImageReader;
    import javax.imageio.ImageTypeSpecifier;
    import javax.imageio.metadata.IIOMetadata;
    import javax.imageio.stream.ImageInputStream;
    import java.awt.image.BufferedImage;
    import java.io.IOException;
    
    public class CustomImageReader implements ImageReader {
    
        @Override
        public boolean canReadRaster() {
            return false;
        }
    
        @Override
        public IIOMetadata getStreamMetadata() throws IOException {
            return null;
        }
    
        @Override
        public IIOMetadata getImageMetadata(int imageIndex) throws IOException {
            return null;
        }
    
        @Override
        public ImageTypeSpecifier getRawImageType(int imageIndex) throws IOException {
            return null;
        }
    
        @Override
        public BufferedImage read(int imageIndex, ImageReadParam param) throws IOException {
            return null;
        }
    
        @Override
        public int getNumImages(boolean allowSearch) throws IOException {
            return 0;
        }
    
        @Override
        public int getWidth(int imageIndex) throws IOException {
            return 0;
        }
    
        @Override
        public int getHeight(int imageIndex) throws IOException {
            return 0;
        }
    
        @Override
        public void setInput(Object input, boolean seekForwardOnly, boolean ignoreMetadata) {
    
        }
    
        @Override
        public void dispose() {
    
        }
    }
  5. Creating a Custom Image Writer

    import javax.imageio.ImageWriter;
    import javax.imageio.ImageWriteParam;
    import javax.imageio.metadata.IIOMetadata;
    import javax.imageio.stream.ImageOutputStream;
    import java.awt.image.BufferedImage;
    import java.io.IOException;
    
    public class CustomImageWriter implements ImageWriter {
    
        @Override
        public IIOMetadata convertImageMetadata(IIOMetadata inData, ImageTypeSpecifier imageType, ImageWriteParam param) {
            return null;
        }
    
        @Override
        public IIOMetadata getDefaultImageMetadata(ImageTypeSpecifier imageType, ImageWriteParam param) {
            return null;
        }
    
        @Override
        public ImageWriteParam getDefaultWriteParam() {
            return null;
        }
    
        @Override
        public void setOutput(Object output) {
    
        }
    
        @Override
        public void write(BufferedImage image, ImageWriteParam param) throws IOException {
    
        }
    
        @Override
        public boolean canWriteRaster() {
            return false;
        }
    
        @Override
        public ImageTypeSpecifier getOutputTypes(IIOMetadata outputMetadata, boolean preferJai) throws IOException {
            return null;
        }
    
        @Override
        public String getFormatName() {
            return null;
        }
    
        @Override
        public int getNumImageWritersByFormatName(String formatName) {
            return 0;
        }
    
        @Override
        public ImageWriter getImageWriter(int index) throws IOException {
            return null;
        }
    
        @Override
        public void dispose() {
    
        }
    }
  6. Using the ImageReader Interface

    import javax.imageio.ImageIO;
    import javax.imageio.ImageReader;
    import javax.imageio.stream.ImageInputStream;
    import java.io.File;
    import java.io.IOException;
    
    public class UseImageReader {
    
        public static void main(String[] args) throws IOException {
            // Create an ImageInputStream from the image file
            ImageInputStream iis = ImageIO.createImageInputStream(new File("image.png"));
    
            // Get the ImageReader for the image format
            ImageReader reader = ImageIO.getImageReadersByFormatName("png").next();
    
            // Set the input to the ImageReader
            reader.setInput(iis);
    
            // Get the image metadata
            IIOMetadata metadata = reader.getImageMetadata(0);
    
            // Get the image width and height
            int width = reader.getWidth(0);
            int height = reader.getHeight(0);
    
            // Read the image data
            BufferedImage image = reader.read(0);
    
            // Close the ImageReader
            reader.dispose();
        }
    }
  7. Using the ImageWriter Interface

    import javax.imageio.ImageIO;
    import javax.imageio.ImageWriter;
    import javax.imageio.stream.ImageOutputStream;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    
    public class UseImageWriter {
    
        public static void main(String[] args) throws IOException {
            // Create an ImageOutputStream from the image file
            ImageOutputStream ios = ImageIO.createImageOutputStream(new File("image.png"));
    
            // Get the ImageWriter for the image format
            ImageWriter writer = ImageIO.getImageWritersByFormatName("png").next();
    
            // Set the output to the ImageWriter
            writer.setOutput(ios);
    
            // Get the image metadata
            IIOMetadata metadata = writer.getDefaultImageMetadata(new ImageTypeSpecifier(BufferedImage.TYPE_INT_RGB), null);
    
            // Write the image data
            writer.write(image, metadata, null);
    
            // Close the ImageWriter
            writer.dispose();
        }
    }
  8. Using the ImageInputStream Class

    import javax.imageio.ImageIO;
    import javax.imageio.stream.ImageInputStream;
    import java.io.File;
    import java.io.IOException;
    
    public class UseImageInputStream {
    
        public static void main(String[] args) throws IOException {
            // Create an ImageInputStream from the image file
            ImageInputStream iis = ImageIO.createImageInputStream(new File("image.png"));
    
            // Read the image data
            byte[] imageData = new byte[iis.length()];
            iis.readFully(imageData);
    
            // Close the ImageInputStream
            iis.close();
        }
    }
  9. Using the ImageOutputStream Class

    import javax.imageio.ImageIO;
    import javax.imageio.stream.ImageOutputStream;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    
    public class UseImageOutputStream {
    
        public static void main(String[] args) throws IOException {
            // Create an ImageOutputStream from the image file
            ImageOutputStream ios = ImageIO.createImageOutputStream(new File("image.png"));
    
            // Write the image data
            ios.write(imageData);
    
            // Close the ImageOutputStream
            ios.close();
        }
    }
  10. Using the IIOMetadata Class

  1. Using the ImageTypeSpecifier Class

  1. Using the FileCacheImageInputStream Class