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