ラスター形式

縦横に格子状に並んだ点(ピクセル)の集合データをラスター形式と呼ぶ。

たとえばフルHD画像であれば、格子のサイズは横1920×縦1080となり、1,920×1,080=2,073,600ピクセルが1画面を表す。

たとえばフルHD画像であれば、格子のサイズは横1920×縦1080となり、1,920×1,080=2,073,600ピクセルが1画面を表す。
これがモノクロ2値画像であれば、1ピクセルあたり2ビット必要なので、1,920×1,080×2bit=4,147,200bit=約518Kバイトのデータ量となる。
また、グレー256階調なら、1ピクセルあたり8ビット必要となり、1,920×1,080×8bit=2,073,600バイト=約1.98Mバイトのデータ量となる。
さらに、フルカラー(RGB各256階調)なら、1ピクセルあたり8×3ビット必要となり、1,920×1,080×24bit=約5.93Mバイトのデータ量となる。

ラスター形式の画像データ量は大きい。変数やデータベース、ファイルに保管するときの目安として、データ量を計算できるようにしておこう。
また、グレー256階調なら、1ピクセルあたり8ビット必要となり、1,920×1,080×8bit=2,073,600バイト=約1.98Mバイトのデータ量となる。
さらに、フルカラー(RGB各256階調)なら、1ピクセルあたり8×3ビット必要となり、1,920×1,080×24bit=約5.93Mバイトのデータ量となる。

ラスター形式の画像データ量は大きい。変数やデータベース、ファイルに保管するときの目安として、データ量を計算できるようにしておこう。
BMPフォーマット


4723×1945ピクセル;26.3MB
BMP形式は、Windowsでよく使われるラスター形式の画像データで、最大4,294,967,296×4,294,967,296ピクセル(32ビット)、1ピクセルあたり256ビットの色数(ほぼ無限)を表現できる。ファイル拡張子は .BMP。
データの冒頭14バイトがファイルヘッダで、続いて情報ヘッダ、最後にピクセルデータの羅列となる。情報ヘッダは、OS/2やWindowsのバージョンによって内容やサイズが異なり、先頭から15~16バイト目に情報ヘッダの長さ(バイト数)が記録されている。ピクセルデータ列は、画像の左上隅を原点として、左から右へ、上から下へと並んでいる。
可逆圧縮と非可逆圧縮

ラスター形式はデータサイズが大きくなるため、データの圧縮を行う場合がある。
ここでは個々の圧縮アルゴリズムについては説明しないが、大きく分けて、圧縮したデータを元のラスター画像に完全復元できる可逆圧縮と、完全復元できない非可逆圧縮の2種類がある。
非可逆圧縮の方がデータを小さいすることができる。完全復元できないとはいえ、見た目では、オリジナルの画像とほとんど違いが分からない。ただし、圧縮率を高くし過ぎると、上左図のようにブロックノイズがあらわれてしまう。
ここでは個々の圧縮アルゴリズムについては説明しないが、大きく分けて、圧縮したデータを元のラスター画像に完全復元できる可逆圧縮と、完全復元できない非可逆圧縮の2種類がある。
非可逆圧縮の方がデータを小さいすることができる。完全復元できないとはいえ、見た目では、オリジナルの画像とほとんど違いが分からない。ただし、圧縮率を高くし過ぎると、上左図のようにブロックノイズがあらわれてしまう。
GIFフォーマット

4723×1945ピクセル;0.55MB
1987年に発表された。1989年には透過とアニメーションがサポートされた。256色まで扱うことができる可逆圧縮で、同じ色が並んでいるような画像に対して圧縮率が高い。ファイル拡張子は .GIF。
圧縮技術としてLZW方式を採用しており、このアルゴリズムは米UNISYSが特許権を持っていた。このため、2003年に特許が失効するまで、一般利用者にも特許使用料が賦課される懸念が生じた。
MAKIフォーマット、MAGフォーマット
わが国のパソコン通信ではタイルペイントを用いた萌え絵が多く流通しており、GIFでは圧縮が難しかった。そこで、1988年頃にMAKIフォーマットが開発された。PC-8801/9801ユーザーが多かった当時のことで、横640×縦200または400ピクセル、16色の画像を可逆圧縮できる。ファイル拡張子は .MKI。
MAKIフォーマットの後継として1991年に発表されたのがMAGフォーマットで、画像サイズは任意になり、256色までの画像を可逆圧縮できる。ファイル拡張子は .mag。
MAKIフォーマットの後継として1991年に発表されたのがMAGフォーマットで、画像サイズは任意になり、256色までの画像を可逆圧縮できる。ファイル拡張子は .mag。
PNGフォーマット

4723×1945ピクセル;2.58MB
Portable Network Graphicsの略。GIFの特許権問題を回避するため、1996年に発表された。16ビットのグレースケールまたは48ビットのRGBカラーの画像を扱うことができる可逆圧縮フォーマットで、GIFと同様、透過やアニメーションに対応している。ファイル拡張子は .PNG。
TIFFフォーマット

4723×1945ピクセル;26.3MB
1986年、マイクロソフトとアルダスによって開発された形式で、さまざまな圧縮アルゴリズムに対応している。ファイル拡張子は .TIF または .TIFF。
そのうちTIFF-Fと呼ばれるプロファイルが、 RFC 2306によってファクシミリ(FAX)のデータ交換方式として標準化された。
そのうちTIFF-Fと呼ばれるプロファイルが、 RFC 2306によってファクシミリ(FAX)のデータ交換方式として標準化された。
PSDフォーマット

4723×1945ピクセル;12.12MB
1990年に発売開始された Adobe Photoshop の画像ファイル形式である。ファイル拡張子は .PSD。
レイヤーやパス、印刷情報や著作権情報などを付加して保存できるほか、ベクター形式を取り込んで保存することもできる。また、非可逆圧縮で保存することもできる。
レイヤーやパス、印刷情報や著作権情報などを付加して保存できるほか、ベクター形式を取り込んで保存することもできる。また、非可逆圧縮で保存することもできる。
JPEGフォーマット

4723×1945ピクセル;0.34MB
Joint Photographic Experts Groupの略。1992年に発表され、ISO/IEC 10918-1:1994で標準化された非可逆圧縮フォーマットである。JIS規格はJIS X 4301である。ファイル拡張子は .JPG または .JPEG。
圧縮率はユーザーが選択することができるが、あまり圧縮率を高くすると画像にブロックノイズが見えるという弱点がある。

これを改善する JPEG 2000 が発表されており、ISO/IEC 15444-1:2000によって標準化された。ファイル拡張子は .JP2 または .J2K。

これを改善する JPEG 2000 が発表されており、ISO/IEC 15444-1:2000によって標準化された。ファイル拡張子は .JP2 または .J2K。
ベクター形式

ラスター形式の画像データは、非圧縮にせよ可逆圧縮にせよ、拡大するとノイズや、境界線のギザギザ(ジャギー)が表れたりする。
そこで、直接を描く、円を描く、図形を塗りつぶすなどのグラフィック命令をデータとして、画像描画をさせるものをベクター形式と呼ぶ。これであれば、任意のサイズに拡大・縮小しても、画像のディテールが変化することはない。
そこで、直接を描く、円を描く、図形を塗りつぶすなどのグラフィック命令をデータとして、画像描画をさせるものをベクター形式と呼ぶ。これであれば、任意のサイズに拡大・縮小しても、画像のディテールが変化することはない。
PICTフォーマット
QuickDraw Pictureの略。AppleがMacintosh用の画像描画ライブラリであるQuickDrawのため、1980年代前半に開発したフォーマットで、ベクター形式のほか、ラスター形式を扱うこともできる。ファイル拡張子は .PICT。
PDIフォーマット
Picture Description Instructionsの略。1983年に北米で標準化されたデータ通信規格 NAPLPS のベクター画像を担うフォーマットである。1984年、わが国で始まったキャプテンシステムでも同じフォーマットが用いられた。
AIフォーマット

4723×1945ピクセル;1.12MB
1987年に発売された Adobe Illustrator のファイル形式で、ベジェ曲線を使った滑らかな曲線描画を可能とするラスター形式データである。
PDFフォーマット

4723×1945ピクセル;1.60MB
1993年に発売されたAdobe Acrobatのファイル形式である。テキスト・ファイルを印刷するためのファイル形式として有名だが、簡単なベクター画像を格納することが可能で、また、ベクター形式のフォント描画データそのものを埋め込むことができる。さらに、ラスター画像も圧縮して取り込むことができる。ファイル拡張子は .PDF。
SVGフォーマット
Scalable Vector Graphicsの略。1998年に開発され、2001年にW3C勧告として標準化された。
XML形式で記述されたベクター・フォーマットで、HTMLとの親和性が高く、Chromeなどのモダン・ブラウザの普及とともに注目されている。ファイル拡張子は .SVG。
(参考)PHPでSVGを使って年表を表示
XML形式で記述されたベクター・フォーマットで、HTMLとの親和性が高く、Chromeなどのモダン・ブラウザの普及とともに注目されている。ファイル拡張子は .SVG。
(参考)PHPでSVGを使って年表を表示
画像データとデータベース
最近のデータベースにはデータ型として BLOB が備わっており、画像データのような巨大なバイナリデータも格納ができるようになっている。しかし、画像データはファイルとして保管し、RDBMSに直接管理させる必要がないケースが多い。
というのは、とくに写真のように、一度作成された画像データが編集・加工されることは少ないので、版管理する必要がない場合が多いし、データベース本体とはバックアップするインターバルも異なる(画像の方は1週間に一度で十分だろう)からだ。

使い古された手法ではあるが、画像データはファイルとして保管し、データベースには当該ファイルへのパスを記録するのが妥当な実装である。このようにすることで、RDBMSに対する無駄なリソース配分を是正することができる。もちろん例外はある。
というのは、とくに写真のように、一度作成された画像データが編集・加工されることは少ないので、版管理する必要がない場合が多いし、データベース本体とはバックアップするインターバルも異なる(画像の方は1週間に一度で十分だろう)からだ。

使い古された手法ではあるが、画像データはファイルとして保管し、データベースには当該ファイルへのパスを記録するのが妥当な実装である。このようにすることで、RDBMSに対する無駄なリソース配分を是正することができる。もちろん例外はある。
参考サイト
- PHPでJPEG画像をPNG画像に変換する:ぱふぅ家のホームページ
- PHP でPDFファイルを作成する:ぱふぅ家のホームページ
- PHPでSVGを使って年表を表示:ぱふぅ家のホームページ
(この項おわり)
画像データ形式には、歴史的に様々なフォーマットがあり、これを整理したものが下表である。
(ラスター混在も)