FireFoxやChromeでは出るのに、InternetExploreでJPEGの画像が表示されないと。
自分は画像まわり全然詳しくなかったんですが、どうも世の中2種類あるらしく。
RGB・・・Web向き
CMYK・・・印刷物向き
みたいになってるんだそうです。
で、CMYKで作ったJPEG画像を表示しようとするとIEでは表示できませんでした、と。
これからは画像を登録する際にこの辺validationで落とさないと駄目だよね
ってなってPHPだと↓のように簡単にチェックできるみたいです。
http://pentan.info/design/illustrator/cmyk_web.html
$tmp = getimagesize("test.jpg");
if(isset($tmp["channels"])){
if($tmp["channels"]==3){
echo "RGBです。";
}elseif($tmp["channels"]==4){
echo "CMYKです。";
}
}
Javaだとどうすんだろ?ってことで、API追いかけてみると、
↓のColorSpaceってクラスに 『isCS_sRGB()』 ってメソッドがあります。
http://java.sun.com/javase/ja/6/docs/ja/api/java/awt/color/ColorSpace.html
BufferedImage→ColorModel→ColorSpaceって流れでイケそうなので、
試しにやってみました↓
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
public class HogeImage {
public static void main(String args[]) throws Exception {
BufferedImage bi = ImageIO.read(new File("C:/image/error.jpg")); // ★CMYK★
// BufferedImage bi = ImageIO.read(new File("C:/image/ok.jpg")); //★RGB★
System.out.println(bi.getColorModel().getColorSpace().isCS_sRGB());
}
}
RGBの場合は true が返ってきて、
CMYKの場合はisRGBまでイケずにその手前で落ちてしまいました。。
Exception in thread "main" javax.imageio.IIOException: Unsupported Image Type at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(Unknown Source) at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(Unknown Source) at javax.imageio.ImageIO.read(Unknown Source) at javax.imageio.ImageIO.read(Unknown Source) at HogeImage.main(HogeImage.java:7)
Exceptionが発生したら~って、なんかダサいから嫌なんですが、
そんなもんなんですかね。。
どうもMacのPhotoShopで~ってので、よくあるケースみたいで、知ってる人は結構知ってたりして。
勉強になりました。
↓この辺の資料とかもとてもよくまとまってて参考になりました。
http://www.cis.twcu.ac.jp/~junko/MultiMedia/2C/pdf/7thMulti.pdf


コメント