色の話(RGBとCMYK)

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

コメント

タイトルとURLをコピーしました