java.awt.image.BufferedImage#getRGB は、 TYPE_INT_ARGB のときに有効。


import java.awt.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
 
// ・透明色を0という文字で出力する
// ・非透明色を1という文字で出力する
public class TransparentColorTest {
 
  public static void main(String[] args) throws Exception {
 
    String file = "transparency.gif";
    BufferedImage src = ImageIO.read(new File(file));
    System.out.println("Image Type: " + src.getType());
 
    // 一旦 TYPE_INT_ARGB にしないと、
    // BufferedImage#getRGB が使えない
    BufferedImage image =
      new BufferedImage(
        src.getWidth(), src.getHeight(),
        BufferedImage.TYPE_INT_ARGB);
    Graphics2D g = image.createGraphics();
    g.drawImage(src,0,0,null);
 
    for(int y=0; y<image.getHeight(); y++){
      for(int x=0; x<image.getWidth(); x++){
        int rgb = image.getRGB(x,y);
        if(rgb == 0){
          System.out.print(0);
        }else{
          System.out.print(1);
        }
      }
      System.out.println();
    }
  }
}

# PNGの透明色とかアルファ値全開の場合はどうなるんだろう……

以前にも似たことしてる → BufferedImage のピクセルデータがどんな値に設定されているか調べる

tags: zlashdot Java Java

Posted by NI-Lab. (@nilab)