GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/emacs/Image-Mode.html ・ emacs-doc.conao3.com

20.19 画像ファイルの表示

画像ファイルにアクセスすると、自動的に画像モードが選択されます。このメジャーモードでは、C-c C-c (image-toggle-display) と入力することで、Emacsバッファ内でファイルを画像として表示するか、その基となるテキスト(または生バイト)表現を表示するかを切り替えることができます。さらに、C-c C-x (image-toggle-hex-display) と入力することで、Emacsバッファ内でファイルを画像として表示するか、16進数表現で表示するかを切り替えることができます。ファイルを画像として表示できるのは、Emacsがそのような画像の表示をサポートするようにコンパイルされている場合に限られます。

表示される画像が、表示ウィンドウよりも幅や高さが広い場合、通常のポイント移動キー(C-f、C-pなど)を押すと、画像の異なる部分が表示されるようになります。ただし、デフォルトでは画像がウィンドウに合わせて自動的にリサイズされるため、この動作が必要になるのは、オプション image-auto-resize や image-auto-resize-on-window-resize を使用してデフォルトの動作をカスタマイズした場合のみです。

画像を手動でリサイズするには、ウィンドウの高さと幅の両方に画像を合わせる、s wにバインドされたコマンドimage-transform-fit-to-windowを使用します。画像を元のサイズの割合で拡大・縮小するには、s pにバインドされたコマンドimage-transform-set-percentを使用します。拡大・縮小率を指定して画像を拡大・縮小するには、s sにバインドされたコマンドimage-transform-set-scaleを使用します。すべての変形を初期状態に戻すには、s 0にバインドされたimage-transform-reset-to-initial、またはs oにバインドされたimage-transform-reset-to-originalを使用します。

n (image-next-file) および p (image-previous-file) を押すことで、それぞれ同一ディレクトリ内の次の画像ファイルと前の画像ファイルに移動できます。これらのコマンドは、「親」diredバッファを参照して、次の/前の画像ファイルを特定します。また、アーカイブファイル(zipやtarファイルなど)からファイルを開く場合にもこれらのコマンドは機能し、その際は代わりにアーカイブモードバッファを参照します。アーカイブバッファもdiredの「親」バッファも見つからない場合は、diredバッファが開かれます。

画像を参照する際、後で処理するためにファイルにマークを付けておくと便利な場合があります(例えば、一連の画像を選択して別の場所にコピーしたい場合など)。m (image-mode-mark-file) コマンドは、現在のファイルのディレクトリを表示しているすべての Dired バッファにおいて、現在のファイルにマークを付けます。そのようなバッファが開いていない場合は、新しいバッファでディレクトリが開きます。ファイルのマークを解除するには、u (image-mode-unmark-file) コマンドを使用します。最後に、単に現在のバッファのファイル名をキルリングにコピーしたい場合は、w (image-mode-copy-file-name-as-kill) コマンドを使用できます。

画像にアニメーションを付けられる場合、コマンド RET (image-toggle-animation) でアニメーションを開始または停止できます。オプション image-animate-loop が nil 以外でない限り、アニメーションは1回のみ再生されます。f (image-next-frame) および b (image-previous-frame) を使用すると、個々のフレームを順に切り替えて表示できます。どちらのコマンドも、数値のプレフィックスを指定することで、複数のフレームを一度にスキップできます。F (image-goto-frame) で特定のフレームに移動できます。フレームは1から番号が振られています。a + (image-increase-speed) と入力するとアニメーションの速度が上がり、a - (image-decrease-speed) で速度が下がり、a r (image-reverse-speed) で逆再生されます。コマンド a 0 (image-reset-speed) で速度を元の値にリセットします。

Imageモード固有の上記のキーバインドに加え、任意のEmacsバッファに表示される画像では、ポイントが画像上または画像内にある場合に特別なキーバインドが利用可能です:

i +

画像サイズ (image-increase-size) を20%拡大します。数値引数の接頭辞で拡大率を制御します。n の値はサイズに 1 + n / 10 を乗じることを意味するため、C-u 5 i + はサイズを50%拡大することを意味します。

i -

画像サイズ (image-decrease-size) を20%縮小します。数値引数の接頭辞で縮小率を制御します。n の値はサイズに 1 - n / 10 の係数を乗じることを意味するため、C-u 3 i - はサイズを30%縮小することを意味します。

i r

画像を時計回りに90度回転します(image-rotate)。接頭辞引数を指定すると、代わりに反時計回りに90度回転します。このコマンドはスライス画像では利用できない点にご注意ください。

i h

画像を水平方向に反転します (image-flip-horizontally)。これにより、画像が垂直鏡に映ったかのように表示されます。なお、このコマンドはスライス済みの画像には適用できません。

i v

画像を垂直方向に反転します (image-flip-vertically)。これにより、画像が水平鏡に映ったかのように表示されます。なお、このコマンドはスライス済みの画像には適用できません。

i o

画像をファイルに保存します (image-save)。このコマンドでは、画像を保存するファイル名の入力が求められます。

i c

画像を切り抜きます (image-crop)。このコマンドは、画像の切り抜きやトリミングに使用できる外部プログラムがシステムにインストールされている場合にのみ利用可能です。使用するプログラムはユーザーオプション image-crop-crop-command で指定でき、デフォルトでは ImageMagick の convert プログラムが使用されます。このコマンドでは、画像に矩形の枠が重畳して表示され、マウスを使って枠を移動したりサイズを変更したりできます。m と入力すると、枠のサイズ変更ではなくマウス操作で枠を移動できます。s と入力すると、代わりに正方形の枠を移動できます。切り抜き枠の位置とサイズに納得がいったら、RET と入力して実際に枠内の部分を切り抜くか、q と入力して切り抜きを行わずに終了します。その後、i o または M-x image-save を使用して切り抜いた画像を保存できます。

i x

画像から矩形を切り出します (image-cut)。これは image-crop と同様に動作します(また、画像の切り出しを行うには、変数 image-crop-cut-command で定義された外部プログラムが必要です)。ただし、画像を切り出すのではなく、フレーム内の部分を削除し、その部分を image-cut-color で指定した色で塗りつぶします。接頭辞引数を指定すると、コマンドは使用する色の入力を求めます。

サイズと回転のコマンドは「繰り返し」指定となっており、i プレフィックスを使わずに画像の調整を続けることができます。

EmacsがImageMagickライブラリをサポートするようにコンパイルされている場合、ImageMagickを使用して多種多様な画像をレンダリングできます。変数 imagemagick-enabled-types には、EmacsがImageMagickを用いてレンダリング可能な画像タイプが列挙されています。リストの各要素は、画像タイプを表すImageMagickの内部名称を、シンボルまたはそれに相当する文字列で指定する必要があります(例:BMP は .bmp 画像に対応)。考えられるすべての画像タイプでImageMagickを有効にするには、imagemagick-enabled-types を t に変更してください。変数 imagemagick-types-inhibit には、imagemagick-enabled-types の値に関わらず、決してImageMagickを用いてレンダリングすべきではない画像タイプが列挙されています(デフォルトのリストには C や HTML といったタイプが含まれており、これらはImageMagickでは画像としてレンダリング可能ですが、Emacsではレンダリングすべきではありません)。ImageMagickを完全に無効にするには、imagemagick-types-inhibit を t に変更してください。

Emacsが該当する画像フォーマットをネイティブにサポートしておらず、かつ image-use-external-converter が nil でない場合、Emacsは表示前に該当画像を PNG に変換するために利用できる外部ユーティリティがあるかどうかを確認しようとします。現在、画像変換には GraphicsMagick、ImageMagick、および ffmpeg がサポートされています。

さらに、特定の画像フォーマット向けに専用のハンドラを追加したい場合もあるでしょう。これらは image-converter-add-handler 関数で追加できます。例えば、Kritaファイルを単純な画像として表示できるようにするには、次のように記述します。

(image-converter-add-handler
 "kra"
 (lambda (file data-p)
   (if data-p
       (error "Can't decode non-files")
     (call-process "unzip" nil t nil
                   "-qq" "-c" "-x" file "mergedimage.png"))))

この関数は2つの引数を取り、1つ目はファイル名のサフィックス、2つ目は「変換」を行う関数です。この関数は2つの引数を取り、1つ目はファイル名またはデータを含む文字列、2つ目は1つ目の引数がデータであるか否かを示すもので、現在のバッファにimage-convert-to-format形式の画像を出力する必要があります。

Image-Diredパッケージを使えば、画像をサムネイルとして表示することもできます。Diredで画像サムネイルを表示するを参照してください。