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
コメント