13 Ocak 2019 Pazar

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
ImageWriter nesnesi döner.
Örnek
Şöyle yaparız.
ImageWriter jpgWriter = ImageIO.getImageWritersByFormatName("jpg").next();
getImageWritersByMimeType metodu
ImageWriter nesnesi döner.
Örnek
Şö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.

Örnek
Şö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
Not : jpg formatında kaydetmek, resimdeki piksellerde kayba sebep olur.
Örnek - jpg olarak kaydetmek
Şöyle yaparız.
BufferedImage image = ImageIO.read(new File("image.jpg"));
ImageIO.write(image, "jpg", new File("image.jpg"));
Örnek - jpg olarak kaydetmek
Şöyle yaparız. Bu örnekte fazladan bir ikinci BufferedImage yaratılıyor. Normalde çevirme işlemini ImageIO sınıfının kendisinin yapması gerekir.
// TIFF image file read
BufferedImage tiffImage = ImageIO.read(new File("tiff-image.tiff"));
// Prepare the image before writing - with same dimensions
BufferedImage jpegImage = new BufferedImage(
          tiffImage.getWidth(),
          tiffImage.getHeight(), 
          BufferedImage.TYPE_INT_RGB);
// Draw image from original TIFF to the new JPEG image
jpegImage.createGraphics().drawImage(tiffImage, 0, 0, Color.WHITE, null);
// Write the image as JPEG to disk
ImageIO.write(jpegImage, "jpg", new File("jpeg-image.jpg"));
Örnek - png olarak kaydetmek
Eğer istenilen format için writer varsa true döner. Şöyle yaparız.
boolean convertToPNG(File imageToConvert, File newImage) {
  boolean isProcessed = false;
  try {
    BufferedImage img = ImageIO.read(imageToConvert);
    isProcessed = ImageIO.write(img, "png", newImage);
  } catch (IOException ioExec) {
    ...
  } catch (IllegalArgumentException illegalArgExec) {
    ...
  }
    return isProcessed;
}
Örnek - png olarak kaydetmek
Şöyle yaparız.
BufferedImage image = ...;
ImageIO.write(image, "png", new File("image.png"));
write metodu - OutputStream
RenderedImage nesnesini belirtilen formatta kaydeder. Metadata eklemez. 
Örnek - jpg olarak kaydetmek
Şöyle yaparız
BufferedImage img = ...;
ByteArrayOutputStream out = new ByteArrayOutputStream ();
ImageIO.write (img, "JPG", out);
Örnek - png olarak kaydetmek
Stream'e kaydetme için şöyle yaparız.
RenderedImage img = ...;
ByteArrayOutputStream out = new ByteArrayOutputStream();
ImageIO.write(img, "png", out);
out.flush();

Hiç yorum yok:

Yorum Gönder