2013年9月29日日曜日

[Java] Java Image は透過色をサポートしていない?

Java7 の ImageIO は PNG の透過色指定をサポートしていないらしい。

package kuro.misc.image;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

public class TransparentColor {
  private static String FILE_IN = "C:/work/temp/test.png";
  private static String FILE_OUT = "C:/work/temp/test-out.png";

  public static void main(String[] args) throws IOException {
    BufferedImage image = ImageIO.read(new File(FILE_IN));
    ImageIO.write(image, "PNG", new File(FILE_OUT));
  }
}

こんな感じのコードを書いて、透過色指定をした「test.png」を読み込ませると、 出力される「test-out.png」は透過色指定がなくなってしまう。

 BufferedImage image = ImageIO.read(new File(FILE_IN));
System.out.println(
    "Image transparency = " + image.getTransparency());
-----------
Image transparency = 1

getTransparency の出力値の意味は以下の通り。
package java.awt;

public abstract interface Transparency
{
  public static final int OPAQUE = 1;
  public static final int BITMASK = 2;
  public static final int TRANSLUCENT = 3;

  public abstract int getTransparency();
}

読み込んだ時点で 透過情報のあるImageだとは扱われていない模様。

0 件のコメント:

コメントを投稿