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)