色の話(RGBとCMYK)

FireFoxChromeでは出るのに、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が発生したら~って、なんかダサいから嫌なんですが、 そんなもんなんですかね。。   どうもMacPhotoShopで~ってので、よくあるケースみたいで、知ってる人は結構知ってたりして。 勉強になりました。   ↓この辺の資料とかもとてもよくまとまってて参考になりました。 http://www.cis.twcu.ac.jp/~junko/MultiMedia/2C/pdf/7thMulti.pdf