
コンピュータグラフィックスにおける透明度は、多くのファイル形式で実現可能です。「透明度」という用語は、人によって様々な意味で使われますが、最も単純なのは「完全透明度」、つまり完全に見えない状態です。グラフィックの一部だけが完全に透明であれば、何も見えなくなってしまいます。より複雑なのは「部分透明度」または「半透明度」で、色付きガラスのようにグラフィックが部分的に透明になる効果を実現します。印刷されたページやコンピュータ、テレビ画面は、最終的には一点で1色しか表現できないため、部分透明度は常に何らかの形で色の混合によってシミュレートされます。色の混合方法は多岐にわたるため、場合によっては透明度が曖昧になることがあります。
さらに、透明度はグラフィック形式における「付加機能」であることが多く、一部のグラフィックプログラムは透明度を無視します。

透明度をサポートするラスターファイル形式には、GIF、PNG、WebP、BMP、TIFF、TGA、JPEG 2000などがあり、透明色またはアルファチャンネルのいずれかを介して透明度を実現します。
ほとんどのベクター形式は、特定の位置にオブジェクトを配置しないという単純な設計のため、暗黙的に透明度をサポートしています。これにはEPSやWMFも含まれます。ベクターグラフィックスの場合、これは厳密には透明度とは見なされないかもしれませんが、ラスター形式の透明度と同様に、慎重なプログラミングが必要となります。
より複雑なベクター形式では、グラフィック内の要素間、およびグラフィック上の要素間の透明度の組み合わせが可能になります。これには、SVGとPDFが含まれます。
適切なラスターグラフィックエディタは、市松模様などの特殊なパターンによって透明度を表示します。

単一のGIFまたはPNG画像のパレット内の1つのカラーエントリは、実際の色ではなく「透明」として定義できます。これは、デコーダーがこの値を持つピクセルを検出すると、背景画像のようにピクセルごとに変化する場合でも、画像が配置されている画面部分の背景色でレンダリングされることを意味します。
用途例:
透明色は、たまたま同じ色のものが消えてしまうのを避けるため、慎重に選ぶ必要があります。
この限定的な透明化機能でさえ、実装はまちまちで、ほとんどの主要なウェブブラウザは透明なGIF画像を表示できます。しかし、このサポートは印刷には及ばず、特にデバイスやドライバに透明化機能が搭載されていない印刷機器(PostScriptなど)では利用できません。ウェブブラウザ以外の環境では、透明なGIFファイルのサポート状況はかなりまちまちです。

透明な背景を持つ文字やその他の画像のエッジには、グレーの濃淡があってはなりません。グレーは通常、文字や画像の色と背景色の中間色として使用され、一般的には黒文字と白背景の中間色となります。しかし、例えば赤い背景の場合、中間色は濃い赤になります。エッジのピクセルがグレーだと、見苦しく不明瞭な結果になります。背景色が可変の場合、適切な固定の中間色はありません。

PNGやTIFFなどの一部の画像フォーマットでは、アルファチャンネルを通して部分的な透明度を設定できるため、エッジの制限という問題を解決できます。各ピクセルが透明か不透明かのどちらかであるのではなく、254段階の透明度を設定できるため、背景画像の一部が前景画像を通して見えるようになります。
部分的な透明度の主な用途は、グラフィックの「ソフトエッジ」を作成し、背景に溶け込ませることです。[ 1 ]モノクロまたはグレーの濃淡、アンチエイリアシングも参照してください。部分的な透明度は、透かしやその他のロゴなどの画像を目立たなくしたり、ビデオゲームの幽霊のような幻影のように何かを透けて表示したりするためにも使用できます。画像編集プログラムでアルファチャンネルをアニメーション化すると、異なる画像間のスムーズな遷移が可能になります。
半透明の色を背景色と合成するプロセス(「コンポジット」)は、しばしば明確な定義がなく、結果が必ずしもすべての場合で同じになるとは限りません。例えば、カラー補正を行う場合、色はカラー補正の前に合成すべきでしょうか、それとも後に合成すべきでしょうか?

完全な透明度を実現する別の方法として、クリッピングパスを使用する方法があります。クリッピングパスとは、他のグラフィックと組み合わせて使用される形状またはアウトラインのことです。パスの内側にあるものはすべて表示され、パスの外側にあるものはすべて非表示になります。パスは本質的にベクターですが、ベクターデータとビットマップデータの両方をマスクするために使用できます。クリッピングパスの主な用途はPostScriptファイルです。
透明度に関する仕様の中には曖昧なものもあるが、2つの色をどのように合成するかを数学的に詳細に規定しているものもある。これは、合成計算がどのように機能し、期待通りの結果を生み出すか、そして予期せぬ結果を生み出すかを示す、比較的簡単な例である。
この例では、2つのグレースケール色を合成します。グレースケール値は、0.0(白)から1.0(黒)までの数値とみなされます。強調しておきますが、これは透明度に関するルールの一例にすぎません。透明度を扱う場合は、ご自身の状況に合ったルールを確認してください。
色G1と色G2を合成する点における色は、です( G1 + G2 ) / 2。これによって生じる結果には、次のようなものがあります。
( G1 + G1 ) /2 = G1。G2 / 2。これは常にG2のゼロ以外の値よりも小さくなるため、結果はG2よりも白くなります。(G2が白の場合は、この関係は簡単に逆転します。)( G2 + 1 ) / 2。これは常にG2よりも大きくなるため、結果はG2よりも黒くなります。( G1 + G2 ) / 2 = ( G2 + G1 ) / 2、2 つの図をどの順序で混ぜても、どちらが上になってどちらが下になっても問題ありません。( ( G1 + G2 ) / 2 + G3 ) / 2 = G1 / 4 + G2 / 4 + G3 / 2 ( G1 + ( G2 + G3 ) / 2 ) / 2 = G1 / 2 + G2 / 4 + G3 / 4
これは重要な点です。なぜなら、この透明度ルールで3つ以上のオブジェクトを組み合わせる場合、最終的な色は計算を行う順序に大きく依存するからです。
計算式は単純ですが、必ずしも理想的とは言えません。人間の明るさの知覚は線形ではないため、グレースケール値0.5が黒と白の中間であるとは必ずしも認識しません。透明度を単にエッジをぼかすために使用する場合は、このような細かい点は問題にならないかもしれませんが、より複雑なデザインでは重要になる可能性があります。透明度を本格的に扱うほとんどの人は、結果を確認する必要があり、必要な結果を得るために色や(可能な場合は)アルゴリズムを調整するでしょう。
この式は、各チャンネルに個別に適用することで、 RGBカラーやCMYKカラーに簡単に一般化できます。たとえば、最終的な色は ですred = ( R1 + R2 ) / 2。ただし、すべてのカラー モデルに適用できるわけではありません。たとえば、Lab カラーでは、予想外の結果が生成されます。
別のモデルとしては、透明度を合成する各要素の各点に、0 から 1 の間の色と不透明度が関連付けられているというものがあります。各カラー チャンネルについては、このモデルを使用できます。強度G2と不透明度を持つチャンネルが強度と不透明度をT2持つチャンネルに重ねられると、結果として強度が、不透明度が のチャンネルになります。合成前に各チャンネルを対応するアルファ値で乗算する必要があります (いわゆる乗算済みアルファ)。SVG ファイル仕様ではこのタイプのブレンドが使用されており、これは PDF で使用できるモデルの 1 つです。G1T1(1 - T2) * G1 + G21 - (1 - T2) * (1 - T1)
アルファチャンネルは、アルファチャンネルが他のすべてのチャンネルに均等に適用される不透明度レベルを提供するように実装できます。上記の式を使用するには、不透明度を外部表現に関係なく(「RGBA」などの8ビットサンプルを使用する場合は、通常0~255)、0~1の範囲にスケーリングする必要があります。
PDF規格バージョン1.4(Adobe Acrobatバージョン5)以降では、透明度(半透明度を含む)がサポートされています。PDFファイルにおける透明度により、オブジェクトに影を追加したり、オブジェクトを半透明にしたり、オブジェクト同士やテキストにブレンドしたりするなど、さまざまな効果を実現できます。PDFは、最も一般的な平均化方式だけでなく、さまざまなブレンドモードをサポートしており、多数の重なり合うオブジェクトを合成するためのルールによって、オブジェクトのグループを背景とブレンドする前にブレンドするか、各オブジェクトを順番に背景にブレンドするかなど、選択肢が広がります。
PDFの透明度は非常に複雑なモデルであり、Adobeによる元の仕様書は100ページ以上にも及びます。複雑さの主な原因は、異なるカラースペースを持つオブジェクトをブレンドすることが難しく、エラーが発生しやすく、互換性の問題を引き起こす可能性があることです。PDFの透明度は、それを理解できないPDFビューアでエラーが発生しないように設計されており、すべての要素を完全に不透明として表示します。しかし、これは諸刃の剣であり、古いビューアやPDFプリンターなどを使用しているユーザーは、元のデザインとは全く異なるものを表示したり印刷したりする可能性があります。
PDFの透明度モデルは非常に複雑であるため、十分なサポートが提供されていません。そのため、RIPやプリンターは透明度を含むPDFの印刷で問題に直面することがよくあります。この問題を解決するには、画像をラスタライズするか、PDFにベクター透明度フラット化を適用するかのいずれかです。しかし、ベクター透明度フラット化は非常に複雑で、ごく一部の専門ソフトウェアでしかサポートされていません。
PostScript言語は、 PostScript のレベルに応じて、完全な (部分的な) 透明度に対するサポートが限られています。部分的な透明度は、多くの PostScript 実装で利用可能な pdfmark 拡張機能[ 2 ]で利用できます。
レベル1のPostScriptは、以下の2つの方法で透明性を提供します。
レベル2のPostScriptには、特定の透明度機能は追加されていません。しかし、パターンを使用することで、任意のベクトル演算またはテキスト演算で定義されたマスクを通して、任意のグラフィックを描画できます。ただし、これは実装が複雑です。さらに、実装上の限界に達することが多く、この技術を提供するアプリケーションプログラムはほとんどありませんでした。
Level 3 PostScriptでは、あらゆるラスター画像に対して、さらに高度な透明度オプションが追加されました。透明色、または透明色の範囲を適用したり、個別の1ビットマスクを使用してアルファチャンネルを提供したりできます。
EPS ファイルには、レベル 1、2、または 3 の PostScript が含まれており、上記の機能を使用します。EPS ファイルのプレビューでは、通常、画面上で EPS ファイルの表示を表示するために使用されるため、より微妙な問題が発生します。プレビューで透明度を設定するための有効な手法があります。たとえば、TIFF プレビューでは TIFF アルファ チャンネルを使用する場合があります。しかし、多くのアプリケーションはこの透明度情報を使用しないため、プレビューは長方形として表示されます。Photoshop で先駆的に開発され、多くのプリプレス アプリケーションで採用されている半独自技術は、 EPS の標準的な場所にクリッピング パスを保存し、それを表示に使用することです。
さらに、EPSプレビューを生成するプログラムのほとんどは、プレビューに透明度情報を含めません。
一部のプログラムは、プレビュー画面上のすべての白を透明として扱うことでこの問題を回避しようと試みていますが、一部の白が透明でない場合、これもまた問題となります。
最近では、プレビューを完全に無視するアプリケーションも登場している。そのため、これらのアプリケーションはPostScriptを解釈することで、プレビューのどの部分を描画するかに関する情報を取得する。