| ファイル名拡張子 | .xpm |
|---|---|
| インターネットメディアの種類 |
イメージ/x-xpixmap [1] |
| 開発者 | ブルリサーチ |
| フォーマットの種類 | 画像ファイル形式 |
| 延長 | XBM |
| オープンフォーマット? | はい |
X PixMap ( XPM ) は、X Window Systemで使用される画像ファイル形式で、1989年にフランスのソフィアアンティポリスのBull Research Centerに勤務していたDaniel DardaillerとColas Nahabooによって作成され、後にArnaud Le Horsによって拡張されました。[2] [3]
これは主にアイコンの ピックスマップの作成を目的としており、透明なピクセルをサポートしています。以前のXBM構文から派生した、 XPM2形式またはCプログラミング言語構文のプレーンテキストファイルであり、Cプログラムファイルに含めることができます。[2]
歴史
XPM1
最初の (1989 年) XPM 形式は、XBM 形式と比較的似ています。[a] XBM と比較すると、インデックス カラー用の追加のマクロ定義と変数を使用し、イメージを記述するためにビットを文字に置き換えます。以下は、1989 年の XPM 形式の白黒イメージです。
#define XFACE_format 1
#define XFACE_width 48
#define XFACE_height 48
#define XFACE_ncolors 2
#define XFACE_chars_per_pixel 1
static char * XFACE_colors [] = { "a" , "#ffffff" , "b" , "#000000" }; static char * XFACE_pixels [] = { "abaabaababaaabaababaabaabaabaabaabaabaaababaabaaab" , // 48 行、48 ピクセルなど
XPM2
XPM2(1990)はCコードをすべて削除してフォーマットを簡素化しました。[b] [c]構造は次のように簡素化されています。
!XPM2 <価値観> <カラー> <ピクセル> <オプション拡張機能>
- 値セクションでは、ステートメントと同様に、画像の全体的な寸法を説明します
#define。 - 色のセクションでは、値と色の「タイプ」という新しい概念を定義します。タイプは、「カラー」の場合はc 、 「モノクロ」出力の場合はm 、 「グレースケール」の場合はg 、「シンボリック」の場合はs で、定義された色が何をするべきかを説明します。
- ピクセルとオプションの拡張子は元の形式のまま残ります。
上記のファイルは、幅 48、高さ 4、色 2、ピクセルあたり 1 文字で、次のようになります。
!XPM2 48 4 2 1 ac #FFFFFF bc #000000 アバアバアバアバアババアバアバアバアバアバアバアバ アバアバアバアバアババアバアバアバアバアバアバアバ アバアバアバアバアババアバアバアバアバアバアバアバ アバアバアバアバアババアバアバアバアバアバアバアバ
色
16進コードに加えて、色はX11の色名のいずれかにすることができます。また、はNone透明度を示します。[4] [5]
「シンボリック」機能を使用すると、使用されるコンテキストに応じて色を調整できます。 などのコードは、s border c blue青い背景で調整できます。
多色エンコード
あるツールは、16 色の場合はaからpのみを使用し、64 色の場合はaaからdpに切り替えますが、それでも 64 色の単一文字エンコーディングを読み取ることが知られています。Base64 と比較してください。
色数が増えると、コードで使用する文字数も増えます。たとえば、 16 × 16 = 256 色の場合はaaからppまでです。これはテキスト エディターではあまり役に立ちません。文字列ab は、実際には 2 つの隣接するピクセルdabcの中央である可能性があるからです。スペースは色コードとして使用できますが、使用するテキスト エディターによっては好ましくない場合があります。制御コード、バックスラッシュ、引用符 (XPM1 および XPM3 で必要) がない場合、128 − 33 − 2 = 93 のASCII文字が単一文字のカラー コードに使用できます。
簡略化した例: 90 個の US-ASCII 文字は、10 文字の 9 つの重複しないセットにまとめることができます。したがって、9 文字の明確な文字列は、最大 10 9の XPM パレット インデックスによって各ピクセルの色を設定できます=1 000 000 000色 ( 256 色のみをサポートするGIFと比較してください)。
XPM2 の場合、画像に何行あるかは明らかです。2 つのヘッダー行、カラー コードの数 (上記の例では 2 行) と行数 (上記の例では高さ 4) を示す 2 番目のヘッダー行、つまり 2 + 2 + 4 = 8 行です。
XPM3
現在および最後の形式は XPM3 (1991) です。C ラッパーが再導入されていますが、ファイルの構造を明示的に示す代わりに、保存される文字列は基本的に XPM2 と同一です。
/* XPM */
static char * XFACE [] = { "48 4 2 1" , "ac #ffffff" , "bc #000000" , " abaabaababaaabaabababaabaabaabaabaabaabaabaaab " , "abaabaababaaabaabababaabaabaabaabaaabaabaabaaab" , "アババアババアバアババアバアバアバアバアババアバアバ" , "アバアバアババアアバアバアバアバアバアバアバアバアバ" };
「値」行に 4 つの数字ではなく 6 つの数字が含まれている場合、追加の値は「ホットスポット」の座標を示します。0 0はアイコンを含むボックスの左上隅で、デフォルトです。「ホットスポット」は、マウス ポインターや同様のアプリケーションに使用されます。
他のフォーマットとの比較

次のコードは、同じ blarg ファイルをXBM、XPM、およびPBM形式で表示します。
XBMバージョン:
#define test_width 16
#define test_height 7
static char test_bits [] = { 0x13 、0x00 、0x15 、0x00 、0x93 、0xcd 、0x55 、0xa5 、0x93 、0xc5 、0x00 、0x80 、0x00 、0x60 };

XPM2 バージョン:
!XPM2 16 7 2 1 * 0 ... .c #ffffff **..*........... *.*.*........... **..*..**..**..** *.*.*.*.*.*.*.*.* **..*..**.*...** ...............* .............**.
XPM3 バージョン:
/* XPM */
static char * blarg_xpm [] = { "16 7 2 1" , "* c #000000" , ". c #ffffff" , "**..*..........." , "*.*.*..........." , "**..*..**..**" , "*.*.*.*.*..*.*" , "**..*..**.*...**" , "...............*" , ".............**." };
PBM ファイル:
1 位 16 7 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 1 0 1 1 0 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 1 1 0 0 1 0 0 1 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0
アプリケーションサポート
ACDSee、Amaya、CorelDRAW、GIMP、ImageMagick、IrfanView(フォーマットプラグイン)、PaintShop Pro、PMView、Photoshop(プラグイン)、XnViewなどがXPMをサポートしています。[6] [7] GravatarとpiconsもXPMをサポートしています。[8] [9]
X11 libXpmの脆弱性は2005年に修正され、[10] 2023年にさらに3つの脆弱性が修正されました。 [11]
FFmpegバージョン3.3以降ではXPMをデコードできます。[12]
参照
注記
- ^ マニュアルの代わりにこの形式の説明が必要な場合は (インターネット上には見つかりません)、xpm-contrib (以前は libXpm の一部) コンバータ (xpm2ppm、xpm1to3、xpm1to2c) のソース コードを使用してください。
- ^ 文字列配列にプログラミング言語構文を使用することもできますが、C 構文のみが認定されています。最終的に、「XPM2 C」構文は XPM バージョン 3 の唯一の形式になりました。
- ^ この構文に関する参考資料については、https://gitlab.freedesktop.org/xorg/lib/libxpm/-/blob/master/NEWS.old および libXpm 3.4 マニュアルの「履歴」セクションを参照してください。
参考文献
- ^ .xpm MIMEタイプはIANAに登録されていません
- ^ ab Le Hors、Arnaud (1996-02-01)。 XPM マニュアル: X PixMap フォーマット(PDF)。雄牛グループ。ページ 7–8 。2014 年 1 月 1 日に取得。
- ^ Daniel Dardailler (1996-07-15). 「XPMの物語」 Colas NahabooとArnaud Le Hors。 1997-06-07時点のオリジナルよりアーカイブ。2014-01-01に閲覧。
- ^ 「XPM FAQ」X.Org Foundation 1996年2016年3月12日閲覧。
- ^ Murray, James D.; Vanryper, William (1996). XPM ファイル形式の概要。O'Reilly & Associates. ISBN 1-56592-161-5. 2014年1月1日閲覧。
{{cite book}}:|work=無視されました (ヘルプ) - ^ Nir Sofer. 「.xpm 拡張子」. 2014 年 1 月 12 日閲覧。
- ^ "ファイルの種類: X Windows ピックスマップ". Windows ファイルの関連付け。マイクロソフト。 2013年。2014 年 1 月 12 日に取得。
- ^ Gravatar非公式、XPM2 なし
- ^ Steve Kinzler (2005). 「Picons Archive」 。 2014-01-06取得。
ピコンはモノクロ XBM 形式またはカラー XPM および GIF 形式のいずれかです。
- ^ 「libXpm ライブラリには複数の整数オーバーフローの脆弱性が含まれています」。US -CERT 2005-10-06 VU#537878 。2014-01-01に取得。
- ^ 「X.Org セキュリティアドバイザリ: libXpm 3.5.15 より前のバージョンでの XPM ファイルの処理に関する問題」。2023 年 1 月 17 日。
- ^ 「FFmpeg 3.3 "Hilbert"」. FFmpeg . 2017-04-13 . 2017-10-28閲覧。XPM
デコーダー
参照
外部リンク
- libXpm - X Pixmap (XPM) 画像ファイル形式ライブラリ
