RGBとCMYKのお話

RGBは加法混色、CMYKは減法混色。
モニタで見る色と、印刷で見る色は異なり、同じ色を出すことはできません。
この違いをどうエミュレートするかが、DTPの鍵なので、いろいろ調べてみました。

有名な変換式
RGB→CMYK

  C=(1-R-K)/(1-K)
  M=(1-G-K)/(1-K)
  Y=(1-B-K)/(1-K)
  K=min(1-R,1-G,1-B)


CMYK→RGB

  R=1-min(1,C*(1-K)+K)
  G=1-min(1,M*(1-K)+K)
  B=1-min(1,Y*(1-K)+K)

これらの式はいわゆる論理式に近く、実際に使用できるほどの精度はない。
RGBとCMYの最小値~最大値を変換しているだけで、色の再現性は無視されている。
そこで、DPのソフトウェアでは、独自の式を用いている場合が多いが、イラストレーターの場合はバージョンで式が異なる。そこで、いったいどうなっているのか調べてみたので、記録しておく。

イラストレータ7の場合

赤を変換してみる。
C:M:Y:K=0:100:100:0

R:G:B=255:0:0

C:M:Y:K=1.17:96.55:91.8:0

R:G:B=250:13:10

C:M:Y:K=2.34:94.92:91.02:0.39

この後はどんどんずれていき、
R:G:B=236:22:11
C:M:Y:K=6.25:91.41:92.97:0.78
前後で安定する。
どのような式で変換されているのかまったくの不明である。

イラストレータCS3の場合

C:M:Y:K=0:100:100:0

R:G:B=204:34:41

C:M:Y:K=0:100:100:0

R:G:B=204:34:41
と、CS3では可逆変換になっている。
ちなみにRGBから変換すると、
R:G:B=255:0:0

C:M:Y:K=0:96.08:89.8:0

R:G:B=255:0:0
こちらも可逆らしい。
イラレ7とは異なる式が用いられているのは明らか。

Photoshop7の場合

C:M:Y:K=0:100:100:0

R:G:B=237:28:36

C:M:Y:K=0:100:100:0
こちらも可逆変換のよう。
RGBから変換すると、
R:G:B=255:0:0

C:M:Y:K=0:99:100:0

R:G:B=255:0:0
こちらも可逆変換と思われる。
しかし、CS3とはRGBが異なり、異なる式が用いられているらしい。

GIMP2.6の場合


C:M:Y:K=0:100:100:0
||
R:G:B=255:0:0
簡単な式によって変換されている。
推測だが、ImageMagickもGIMPと同じ式を用いて変換されているらしい。

  C=1-(R/255)
  M=1-(G/255)
  Y=1-(B/255)


但し
C=M=Yの場合に限り

  K=C
  C=M=Y=0


となる。

結論としては、CMYKを基準にして、ディスプレイでは適当なRGBを選択しておき、EPSなどにするときは内部でテーブルを用意して置き換えるのがよさそうです。

桂ヒナギク starring 伊藤 静

ハヤテのごとく!!のヒロイン(?)である桂ヒナギク様のキャラクターソングCDです。
雨の中、池袋のアニメイトで買ってきました。
発売から2ヶ月ぐらいたっていますが、いまだに限定版が面で置いてあって、発注に失敗したのか、作りすぎでメーカーから押し付けられたのか・・・と詮索はここまでにして。

いまだに曲を確認せずにタイトル買いなのですが、全体ではそこそこ良い方だと思います。
一部の曲はミックスダウンがドンシャリで少々聞きづらかったりもしてますが、キャラを生かした構成にはなっているかと。ちなみに予算の都合上、通常版を買いました。

Fedora10でWebminがインストールできない時には

Fedora10で何も考えずにWebminをインストールしようとすると失敗します。
Firefoxでパッケージをダウンロードしてインストールを開始すると、以下のようなエラーが表示されて進めません。

Error Type: <type 'exceptions.UnicodeDecodeError'>
Error Value: 'ascii' codec can't decode byte 0xe3 in position 56: ordinal not in range(128)
  File : /usr/lib/python2.5/site-packages/yum/rpmtrans.py, line 376, in callback
    self._instProgress( bytes, total, h )
  File : /usr/lib/python2.5/site-packages/yum/rpmtrans.py, line 457, in _instProgress
    self.complete_actions, self.total_actions)
  File : /usr/share/PackageKit/helpers/yum/yumBackend.py, line 2187, in event
    self._showName(self.info_actions[action])
  File : /usr/share/PackageKit/helpers/yum/yumBackend.py, line 2180, in _showName
    self.base.package(package_id, status, self.curpkg.summary)
  File : /usr/share/PackageKit/helpers/yum/yumBackend.py, line 230, in package
    PackageKitBaseBackend.package(self, package_id, status, summary)
  File : /usr/lib/python2.5/site-packages/packagekit/backend.py, line 109, in package
    print >> sys.stdout, "package\t$s\t$s\t$s" $ (status, package_id, summary)

ここで肝心なのは最初の1行のみ。
文字コードに問題がある用です。
Fedora10のFirefoxはダウンロード先はデスクトップの「ダウンロード」フォルダです。この「ダウンロード」という文字が怪しそうです。
そこで、パッケージをデスクトップに移動してもう一度インストールを行うと、無事に完了しました。
CentOS5.3ではデフォルトの保存先はデスクトップだったのでこの様な事態に遭遇しませんでしたが、Fedora10ではこのような事態が発生します。
エラーが表示されても、落ち着いてメッセージを確認すれば大抵のことは分かります。
今手に入るLinuxではWindowsみたいに謝るだけで何がダメなのか教えてくれないなんてことはありません。

イラレのEPSファイルを考察する

今回は文字についての考察です。
文字を比較していて気がついたのですが、イラレのEPSフォーマットは8と9で大きく異なります。

まず、文字の記述方法です。
イラレ8までは、「(abcdefg) TX 1 0 Tk」となりますが、
イラレ9以降では、「(abcdfeg) sh」となります。

文字を含むかどうかをチェックしたい場合、
イラレ8までは、ほかにtxを含むものがないので「/\) tx/i」でよく、
イラレ9からは、shの後は必ず改行があり、showとかぶるので「/\) sh\r?\n/」となります。「\r?\n」とするのは、エディタで改行コードを変えた場合に備えておきます。

次は画像についてです。
イラレ8までは、「%AI5_File:」があれば画像情報を含んでいることになります。
イラレ9ではどうやらPDFとして埋め込まれているようで、フォーマットについて理解がありませんが、おそらく「Adobe_AGM_Image」このあたりが怪しいです。

とりあえず、こんな感じです。

wordpressでページの親子関係を動的に表示させる

実は今まで、ページの親子関係はいちいち手入力してました。
phpで組めばいいのですが、調べ方がとくわからなかったからです。
何気にふと検索したら、その方法が出ていました。

自分用に若干手を加えたので載せておきます。

<!-- structure tree view -->
<?php
global $wp_query;

if( empty($wp_query->post->post_parent) ) {
$parent = $wp_query->post->ID;
} else {
$parent = $wp_query->post->post_parent;
} ?>
<?php if(wp_list_pages("title_li=&child_of=$parent&echo=0" )): ?>
<ul>
<?php wp_list_pages("title_li=&child_of=$parent" ); ?>
</ul>
<?php endif; ?>
<!-- /structure tree view -->


テーマ編集、ページテンプレートに追加すると幸せになれることでしょう。
ただし、今見ているページから下のみを表示できるわけではなく、今見ているページから一番上の親から下の全てになります。

Spreadsheet_Excel_Readerのバグ

セルの書式に文字列を指定すると、

Notice: Undefined variable: formatstr in D:\xxx\xxx\Excel\reader.php on line 636


という注意が出ます。
xxxは適当なパスだと思ってください。

このエラーメッセージの出るところを見てみると、変数の初期化がきちんと行われていなため、例外処理が不完全だということのようです。
このあたりの一連の処理が始まるところで、$formatstrを初期化してしまいましょう。
630行目に
$formatstr=”;
とでもしておきます。
これで注意が表示されなくなりました。
このあたりは、PHPのバージョンが違うと注意は表示されないのかもしれません。
このライブラリのようなコードの書き方はあまり馴染めません。
中括弧({})を使ったほうが見やすいと思うのですが。

アイ!マイ!まいん!

ぜんまいざむらいが終わってもテレビをつけっぱなしにしていたら始まった番組で、第1話をみてぶったまげました。
しばらく見ていましたが、なかなかのロリコンホイホイで、自分も捕らえられたその一人。
このようなご乱心をNHKが続けてくれることを望みつつ。


KIDS WORLD – 番組しょうかい:クッキンアイドル アイ! マイ! まいん!