なんてこった,Office 2010 の Word や Excel では jpeg の画像が劣化する

とほほ

Microsoft Office 2010 (以下,Office) の Word, Excel では,貼り付けたjpeg 画像の一部の情報が失われる (減少する) ことが分かりました.元の画像がきれい (情報量が多い) でも,Word/Excel に貼り付けて渡されると,画質が劣化します.とほほです.Word/Excel のファイルからjpeg 画像を取りすと,元より劣化した画像しか得られないことを意味します.ただし,png や emf は劣化しません.PowerPoint では jpeg も劣化しません.

テストに使ったファイル

表1に示す三つの画像ファイルを Office に貼り付けました.もちろん,zip で圧縮する前のファイルを図の挿入の機能 (コビー & ペーストでない) を使いました.これらのファイルのサイズの真の情報量は, zip 圧縮後のファイルサイズに大体等しいくなります.jpeg や png は既に圧縮されているので,zip にしてもファイルサイズの変化は小さいです.emf は圧縮されていないのですね.

表1 テストに用いた画像
画像ファイル 形式 ファイルサイズ/kB zip 圧縮後/kB
猫の写真 jpeg 226.4 226.3
ラジオの絵 png 8.0 8.1
周期律表 emf 544.2 88.3

Office に貼り付ける

これらの三つの画像のファイルを Office のアプリケーション (Word, Excel, PowerPoint) に貼り付けます.出来上がったファイルサイズは,表2のとおりです.

期待を裏切られた結果です.私の期待は,表1の zip 圧縮後の 322 kB (226+8+88) です.Word と Excel のファイルサイズは,それよりも明らかに小さくなっています.なにか画像の情報は失われています.PowerPoint は期待できます.次の節で,画像を抽出した結果を示します.

表2 Office に貼り付けた結果
Office 形式 ファイルサイズ/kB
Word docx 211.2
Excel xlsx 232.4
PowerPoint pptx 365.4

画像ファイルの抽出

Office のファイルから,そこに含まれている画像を抽出することができます.ファイルの拡張子(docx, xlsx, pptx) を zip に変更し,それを解凍するだけです.すると,アプリケーション名(word, xl, ppt) > メディアというフォルダーに画像が保管されます.これができるのは,Office のファイルは,zip 圧縮された XML だからです.

表3 に画像の抽出結果を示します.表1 と比較すると,

  • jpeg の「猫の写真」は, Word と Excel では画像の劣化が生じることが分かります.PowerPoint では画像の劣化はありません.
  • png の「ラジオの絵」は,画像の劣化もありません.バイト単位の比較でも変化なしです.
  • emf の「周期律表」は,画像の劣化もありません.バイト単位の比較でも変化なしです.
表3 Office のファイルから画像抽出した結果
画像ファイル Word/kB Excel/kB PowerPoint/kB
猫の写真 95.0 110.3 226.4
ラジオの絵 8.0 8.0 8.0
周期律表 544.2 544.2 544.2

まとめ

表4に,ここでの Offece 2010 の画像の貼り付けと抽出で分かった結果をまとめます.これは,直ちに一般化できるものではありませんが,参考にはなると思います.説明を付けて,写真などの jpeg 画像を渡す場合,PowerPoint が最も適していることが分かります.Office アプリケーションで,png や emf の画質の劣化がないのは嬉しいことです.

表4 元画像と比較した Office 2010 のファイルの画像の抽出結果.
画像ファイル Word Excel PowerPoint
jpeg 劣化あり 劣化あり 劣化なし
png 劣化なし 劣化なし 劣化なし
emf 劣化なし 劣化なし 劣化なし

Excel のプロットは糞だ

糞の理由

スプレッドシートとしての Excel は,秀逸だと思う.その一方で,Excel のプロットは糞だと思う.理由は以下の通り.

  1. プロットの作成が煩雑.私は未だにプロット作成方法が分からない.これは人に依存するのでなんとも言えないが,少なくともGUI を使ったプロット作成ソフトの KaleidaGraph とは雲泥の差だ.
  2. プロットが汚い.細かい調整をすれば,それなりのものになるとう話もあるが,毎回の調整は面倒だ.大体,デフォルトのプロットがダサすぎる.
  3. ベクター図としての保存ができない.Microsoft Office の閉じた環境で使うのなら問題ないが,それ以上の高度なことはできない.

どうすれば良いか

プロットが含まれるドキュメント作成する 科学技術関係の仕事をする人は,Excel 以外のプロット作成ツールを使うことを強く勧めます.Microsoft Office しか使わない人は,面倒ですが Excel でも良いです.ちゃんとしたプロットを作成したいならば,KaleidaGraph は簡単でお勧めです.あるいは, DeltaGraph も評判が良いです.

Gnuplot や Python の matplotlib も良いです.私のお気に入りは,Matplotlib です.

まとめ

という具合で,Excel のプロットはダメですね.Microsoft Office 環境では何とか使えるが,ほかの環境では使い物にならないと考えた方が良さそうです.ベクター図として保存できないのは致命的です.DeltaGraph あるいは KaledaGraph, Gunuplot, Matplotlib がお勧めです.