29 Mart 2018 Perşembe

ImageIO Sınıfı

Giriş
Şu satırı dahil ederiz.
import javax.imageio.ImageIO;
getImageReadersByFormatName metodu
Şöyle yaparız.
Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName("JPEG");
while (readers.hasNext()) {
    System.out.println("reader: " + readers.next());
}
Çıktı olarak şunu alırız.
reader: com.sun.imageio.plugins.jpeg.JPEGImageReader@33d6f122
getImageWritersByFormatName metodu
Şöyle yaparız.
ImageWriter jpgWriter = ImageIO.getImageWritersByFormatName("jpg").next();
getImageWritersByMimeType metodu
Şöyle yaparız.
String mimeType = "image/gif";
ImageWriter writer = ImageIO.getImageWritersByMIMEType(mimeType).next();
read metodu - File
BufferedImage tipinden bir nesne döner.
Örnek
Şöyle yaparız.
File file = ...;
BufferedImage image = ImageIO.read(file);
Örnek
Şöyle yaparız.
BufferedImage image= ImageIO.read(new File("C:\\is.jpg"));
read metodu - InputStream
java.awt.BufferedImage tipinden bir nesne döner.

Şöyle yaparız. BufferedImage aynı zamanda java.awt.image.RenderedImage arayüzünü gerçekleştirdiği için sonuç atanabilir.
byte[] bytes = ...;
ByteArrayInputStream in = new ByteArrayInputStream (bytes);
RendederedImage img = ImageIO.read(in);
jar dosyasındaki bir stream'den okuma için Class.getResourceAsStream() metodu kullanılır.
ImageIO.read (MyClass.class.getResourceAsStream ("myImage.png"));
Örnek
Şöyle yaparız.
BufferedImage image
 = ImageIO.read (this.getClass().getResourceAsStream ("/res/player.png"));
read metodu - URL
java.awt.BufferedImage tipinden bir nesne döner.

Örnek
Şöyle yaparız. BufferedImage aynı zamanda java.awt.Image sınıfından kalıttığı için sonuç atanabilir.
Image image = null;
try {
  URL url = new URL("https://.../photo.jpg");
  image = ImageIO.read (url);
} catch (IOException e) {
  ...
}
Örnek
Şöyle yaparız. getResource absoulute veya relative path ile çalışabilir.
ImageIO.read(getClass().getResource("/something/image.png"));
write metodu - File
Şöyle yaparız.
BufferedImage image = ImageIO.read(new File("image.jpg"));
ImageIO.write(image, "jpg", new File("image.jpg"));
jpg formatında kaydetmek, resimdeki piksellerde kayba sebep olur.

Şöyle yaparız.
BufferedImage image = ...;
ImageIO.write(image, "png", new File("image.png"));

write metodu - OutputStream
RenderedImage nesnesini belirtilen formatta kaydeder. Metadata eklemez. Stream'e kaydetme için şöyle yaparız.
RenderedImage img = ...;
ByteArrayOutputStream out = new ByteArrayOutputStream();
ImageIO.write(img, "png", out);
out.flush();
Şöyle yaparız
BufferedImage img = ...;
ByteArrayOutputStream out = new ByteArrayOutputStream ();
ImageIO.write (img, "JPG", out);

Hiç yorum yok:

Yorum Gönder