Java by API/javax.imageio/ImageReader

Материал из Java эксперт
Версия от 17:09, 31 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

ImageReader: addIIOReadProgressListener(IIOReadProgressListener listener)

   <source lang="java">
 

import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.util.Iterator; import javax.imageio.ImageIO; import javax.imageio.ImageReader; import javax.imageio.ImageWriter; import javax.imageio.event.IIOReadProgressListener; import javax.imageio.stream.ImageInputStream; import javax.imageio.stream.ImageOutputStream; public class Main{

 static public void main(String args[]) throws Exception {
   FileInputStream fin = new FileInputStream("a.gif");
   Iterator readers = ImageIO.getImageReadersBySuffix("GIF");
   ImageReader imageReader = (ImageReader) readers.next();
   ImageInputStream iis = ImageIO.createImageInputStream(fin);
   imageReader.setInput(iis, false);
   imageReader.addIIOReadProgressListener(new IIOReadProgressListener() {
     public void imageComplete(ImageReader source) {
       System.out.println("image complete " + source);
     }
     public void imageProgress(ImageReader source, float percentageDone) {
       System.out.println("image progress " + source + ": " + percentageDone + "%");
     }
     public void imageStarted(ImageReader source, int imageIndex) {
       System.out.println("image #" + imageIndex + " started " + source);
     }
     public void readAborted(ImageReader source) {
       System.out.println("read aborted " + source);
     }
     public void sequenceComplete(ImageReader source) {
       System.out.println("sequence complete " + source);
     }
     public void sequenceStarted(ImageReader source, int minIndex) {
       System.out.println("sequence started " + source + ": " + minIndex);
     }
     public void thumbnailComplete(ImageReader source) {
       System.out.println("thumbnail complete " + source);
     }
     public void thumbnailProgress(ImageReader source, float percentageDone) {
       System.out.println("thumbnail started " + source + ": " + percentageDone + "%");
     }
     public void thumbnailStarted(ImageReader source, int imageIndex, int thumbnailIndex) {
       System.out.println("thumbnail progress " + source + ", " + thumbnailIndex + " of "
           + imageIndex);
     }
   });
   BufferedImage image = imageReader.read(0);
   Iterator imageWriters = ImageIO.getImageWritersBySuffix("JPG");
   ImageWriter imageWriter = (ImageWriter) imageWriters.next();
   File file = new File("b.JPG");
   ImageOutputStream ios = ImageIO.createImageOutputStream(file);
   imageWriter.setOutput(ios);
   imageWriter.write(image);
 }

}


 </source>
   
  
 
  



ImageReader: getFormatName()

   <source lang="java">
 

import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.Iterator; import javax.imageio.ImageIO; import javax.imageio.ImageReader; import javax.imageio.stream.ImageInputStream; public class Main {

 public static void main(String[] argv) throws Exception {
   File file = new File("image.gif");
   System.out.println(getFormatName(file));
   InputStream is = new FileInputStream(file);
   is.close();
   System.out.println(getFormatName(is));
 }
 private static String getFormatName(Object o) {
   try {
     ImageInputStream iis = ImageIO.createImageInputStream(o);
     Iterator iter = ImageIO.getImageReaders(iis);
     if (!iter.hasNext()) {
       return null;
     }
     ImageReader reader = (ImageReader) iter.next();
     iis.close();
     return reader.getFormatName();
   } catch (IOException e) {
   }
   return null;
 }

}


 </source>
   
  
 
  



ImageReader: getNumImages(boolean allowSearch)

   <source lang="java">
 

import java.awt.Graphics; import java.awt.Panel; import java.awt.image.BufferedImage; import java.io.FileInputStream; import java.util.Iterator; import javax.imageio.ImageIO; import javax.imageio.ImageReader; import javax.imageio.stream.ImageInputStream; import javax.swing.JFrame; public class Main extends Panel{

 private BufferedImage images[];
 private int imageIndex = 0;
 public Main(String filename) throws Exception{
     FileInputStream fin = new FileInputStream(filename);
     String suffix = filename.substring(filename.lastIndexOf(".") + 1);
     System.out.println("suf " + suffix);
     Iterator readers = ImageIO.getImageReadersBySuffix(suffix);
     ImageReader imageReader = (ImageReader) readers.next();
     ImageInputStream iis = ImageIO.createImageInputStream(fin);
     imageReader.setInput(iis, false);
     int num = imageReader.getNumImages(true);
     images = new BufferedImage[num];
     for (int i = 0; i < num; ++i) {
       images[i] = imageReader.read(i);
     }
     fin.close();
 }
 public void paint(Graphics g) {
   if (images == null)
     return;
   g.drawImage(images[imageIndex], 0, 0, null);
   imageIndex = (imageIndex + 1) % images.length;
 }
 static public void main(String args[]) throws Exception {
   JFrame frame = new JFrame("ShowImageIR.java");
   Panel panel = new Main(args[0]);
   frame.getContentPane().add(panel);
   frame.setSize(400, 400);
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   frame.setVisible(true);
 }

}


 </source>
   
  
 
  



ImageReader: read(int imageIndex)

   <source lang="java">
 

import java.awt.Graphics; import java.awt.Panel; import java.awt.image.BufferedImage; import java.io.FileInputStream; import java.util.Iterator; import javax.imageio.ImageIO; import javax.imageio.ImageReader; import javax.imageio.stream.ImageInputStream; import javax.swing.JFrame; public class Main extends Panel{

 private BufferedImage images[];
 private int imageIndex = 0;
 public Main(String filename) throws Exception{
     FileInputStream fin = new FileInputStream(filename);
     String suffix = filename.substring(filename.lastIndexOf(".") + 1);
     System.out.println("suf " + suffix);
     Iterator readers = ImageIO.getImageReadersBySuffix(suffix);
     ImageReader imageReader = (ImageReader) readers.next();
     ImageInputStream iis = ImageIO.createImageInputStream(fin);
     imageReader.setInput(iis, false);
     int num = imageReader.getNumImages(true);
     images = new BufferedImage[num];
     for (int i = 0; i < num; ++i) {
       images[i] = imageReader.read(i);
     }
     fin.close();
 }
 public void paint(Graphics g) {
   if (images == null)
     return;
   g.drawImage(images[imageIndex], 0, 0, null);
   imageIndex = (imageIndex + 1) % images.length;
 }
 static public void main(String args[]) throws Exception {
   JFrame frame = new JFrame("ShowImageIR.java");
   Panel panel = new Main(args[0]);
   frame.getContentPane().add(panel);
   frame.setSize(400, 400);
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   frame.setVisible(true);
 }

}


 </source>
   
  
 
  



ImageReader: setInput(Object input, boolean seekForwardOnly)

   <source lang="java">
 

import java.awt.Graphics; import java.awt.Panel; import java.awt.image.BufferedImage; import java.io.FileInputStream; import java.util.Iterator; import javax.imageio.ImageIO; import javax.imageio.ImageReader; import javax.imageio.stream.ImageInputStream; import javax.swing.JFrame; public class Main extends Panel{

 private BufferedImage images[];
 private int imageIndex = 0;
 public Main(String filename) throws Exception{
     FileInputStream fin = new FileInputStream(filename);
     String suffix = filename.substring(filename.lastIndexOf(".") + 1);
     System.out.println("suf " + suffix);
     Iterator readers = ImageIO.getImageReadersBySuffix(suffix);
     ImageReader imageReader = (ImageReader) readers.next();
     ImageInputStream iis = ImageIO.createImageInputStream(fin);
     imageReader.setInput(iis, false);
     int num = imageReader.getNumImages(true);
     images = new BufferedImage[num];
     for (int i = 0; i < num; ++i) {
       images[i] = imageReader.read(i);
     }
     fin.close();
 }
 public void paint(Graphics g) {
   if (images == null)
     return;
   g.drawImage(images[imageIndex], 0, 0, null);
   imageIndex = (imageIndex + 1) % images.length;
 }
 static public void main(String args[]) throws Exception {
   JFrame frame = new JFrame("ShowImageIR.java");
   Panel panel = new Main(args[0]);
   frame.getContentPane().add(panel);
   frame.setSize(400, 400);
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   frame.setVisible(true);
 }

}


 </source>