ImageMagick の例 --
サムネイルの作成とフレーム
![]() |
||
サムネイルの保存
まず、非常に重要な点から始めたいと思います。ビデオカメラや写真スキャンからの元の画像は、元の形式のまま、できれば非可逆形式(JPEG画像形式ではない)で、ファイル名の変更を除き、サイズ変更やその他の変更を加えずに安全な場所に保管する必要があります。もちろん、スキャンした画像は再スキャンできますが、後で劣化したコピーからやり直すよりも、元のソースを再利用する方がはるかに優れています。これは、どのような形式の変更も画像内の情報の一部が失われることを意味し、他の用途のために画像を再加工するためのソースを提供するため、非常に重要です。元の画像は、表示用にサイズ変更または色調整される可能性のある作業画像である必要はありません。将来の使用のために画像を保存し、安全な場所にバックアップしてください。次に、サムネイルを作成する前に、通常サイズの画像形式に対してサムネイルをどのように保存するかを決定し、そのスキームを順守する必要があります。これは、Webページで特に重要です。スキームには以下が含まれます...- メインの写真画像を、必要なサイズで可逆JPEG形式で保存し、生成されたサムネイルには同じ名前を使用しますが、GIF画像形式を使用します。たとえば、同じファイル名ですが、形式とサフィックスが異なります。メイン画像:
photo_name.jpg
サムネイル:
photo_name.gif
- たとえば「
thumbs
」など、便利な名前のサブディレクトリに同じ名前でサムネイルを保存します。メイン画像:photo_name.jpg
サムネイル:
thumbs/photo_name.jpg
- 元の画像と同じ形式を使用しますが、ファイル名に余分な文字列を追加します。一般的な文字列の追加には、「
_tn
」、「_small
」、「_thumb
」などが含まれます...メイン画像:photo_name.jpg
サムネイル:
photo_name_tn.jpg
- 上記のいくつかの組み合わせ。サムネイルを異なる画像形式で保存し、追加の画像サフィックスをファイル名に追加して、サブディレクトリに保存できない理由はありません。メイン画像:
images/photo_name.jpg
サムネイル:
thumbs/photo_name.jpg.gif
これは実際にはWWWではごく一般的であり、完全に別々のマシンに保存された2つのディレクトリさえ見たことがあります!
-format
」設定を使用して出力画像形式を指定することで、元の画像を破棄せずに「magick mogrify
」を使用してすべてのサムネイルを生成できます。IM v3.2.0以降、「magick mogrify
」でも、変更された画像を保存する別のディレクトリを指定する特別な「-path
」設定のおかげで、2番目のスキームも可能になりました。たとえば、これは、作成されたばかりの「thumbs
」サブディレクトリ内のJPG画像をGIFサムネイルに変換します。
mkdir thumbs magick mogrify -format gif -path thumbs -thumbnail 100x100 *.jpg |
magick mogrify
」を実行する前に、元の画像のコピーを作成するか、画像を処理するための特別なスクリプトを作成するか、またはその他のDIY方式が必要です。いくつかの単純な非IMテクニックは、バッチ処理 - 「magick mogrify
」を使用しないの例のセクションの最後に詳述されています。どの方法を選択する場合でも、重要なことはサムネイルストレージのスキームを選択し、それを守ることです。すべてのサムネイルに同じスキームを使用することで、シェルまたはPerlスクリプトを作成して、サムネイルの生成やHTMLリンクの生成を簡単に行うことができます。詳細は後述します。サムネイル形式の選択
サムネイルを保存する形式は、ディスク上の最終的なサイズとWebページのダウンロード速度に大きな影響を与える可能性があります。この点に関しては、さまざまな一般的なファイル形式の概要を調べることをお勧めします。特に、以下に注意する必要があります...- JPEG は適切に圧縮され、非可逆ですが、小さなサムネイルではなく、大きな実世界の画像向けに設計されています。また、いかなる形式の透明度も許可していません。要約すると、この形式は大きな画像には適していますが、サムネイルには適していません。プロファイルに注意してください(次のセクションを参照)。JPGはサムネイルには推奨されていませんが、WWWで画像を表示する場合は、はるかに低い「
-quality
」パーセンテージ(たとえば50または30%)で、より小さい800x600ピクセルの画像を使用することをお勧めします。あまり良くは見えません。「-sampling-factor 2x1
」を使用すると、より小さいJPEG画像サイズも生成されることが示唆されています。友人がダウンロードするために(参照されている場所で)一時的に置かれる場合を除き、元のフル画像が決して直接Webに置かれることを推奨しません。リンクしないでください(ディレクトリインデックスによる場合でも)。1日以上置くと、Googleで検索される可能性があります。 - GIF は単純な小さな画像に適しており、適切に圧縮されます。色の制限は256ですが、小さな画像ではほとんど目立ちません。また、サムネイルには必要ないかもしれませんが、本当にファンシーなものを求めるのであれば、画像の漫画のようなアニメーションも実行できます。問題は、この形式がブール値(オン/オフ)の透明度しか持たないため、整形された画像にひどい境界線が生じることです。その解決策は、ブール値の透明度のみを使用するようにサムネイルを設計するか、特定の背景色でのみ使用できるように配置することです。詳細については、背景色またはパターンでのGIFの例を参照してください。
-
PNG は、サムネイルの現代的な理想的な形式です。優れた圧縮と内部形式スタイルを備えています。これは非可逆であり、すべての色を表示でき、最近ではほとんどすべてのブラウザで理解されています(ただし、Microsoft Internet Explorerの場合、v7より前では、WebページにJavaスクリプトを追加する必要があります)。さらに重要なことは、この形式が半透明の色を理解し、必要に応じて影やエッジをシャープかつクリアにしたり、フェードアウトやぼやけたりさせることができることです。ただし、この形式ではアニメーションは実行されませんが、関連するMNG形式では実行されます。ただし、その形式をサポートしているブラウザはほとんどありません。サムネイルの場合、最終的なサムネイル画像の「
bzip
」圧縮品質(「-quality
」の最初の数字)を高く設定するだけでなく、深度と色数を減らすことで、最終的な画像のサイズを縮小できます。たとえば、以下は透明度を含まない小さなPNGサムネイルに推奨されます。-strip -quality 95 PNG8:thumbnail.png
中間的な作業画像にJPEG、PNG8、またはGIFを使用しないでください!
PNGまたはMIFFを使用する方が適切です。
PNGまたはMIFFを使用する方が適切です。
プロファイル、ストリッピング、およびJPEG処理
デジタルカメラ、スキャンソフトウェア、および一部のペイントプログラム(Photoshopは悪名高い)からの多くの画像は、プロファイルの形式で画像に関する追加情報を保存します。これには、JPEG、PNG、TIFF、およびIM v6.2.4-1 GIFなどの画像形式が含まれます。もちろん、IM固有の形式であるMIFFもこれを行います。(詳細については、画像プロファイルを参照してください)。これらのプロファイルは最大60Kbのサイズになる可能性があるため、ファイルサイズに大きな影響を与える可能性があり、デフォルトではIMはこのプロファイル情報を保持します。サムネイルにはこのデータは必要なく、多くの場合、メイン画像でさえ必要ありません。また、IMコマンドを使用して画像からプロファイルを削除することもできます...
magick input.jpg -strip output.jpg magick mogrify -strip *.jpg |
-profile '*'
」を使用してプロファイルを削除することもできます。ただし、画像を修正する場合、特にWeb表示またはサムネイル画像用にサイズを縮小する場合は、プロファイルを削除することをお勧めします。特に小さなサムネイル画像を生成するために、サイズ変更中にプロファイルを削除することは非常に一般的なため、「-resize
」と「-strip
」の両方が、この目的に合わせて新しい操作に結合されました。当然のことながら、このサイズ変更操作は「-thumbnail
」と呼ばれます。例えば...
magick -define jpeg:size=240x180 image.jpg -thumbnail 120x90 thumbs/image.gif magick mogrify -path thumbs -format gif -define jpeg:size=240x180 -thumbnail 120x90 '*.jpg' |
![]() ![]() |
IM v6.5.4-7より前は、「-thumbnail 」は、ICCカラープロファイルを含む、画像からすべてのプロファイルを削除していました。このバージョン以降、カラープロファイルは保持されます。カラープロファイルが不要な場合は、「-strip 」ですべてのプロファイルを削除してください。 |
magick mogrify
」コマンドは、もちろん JPEG 画像のディレクトリ全体に対してサムネイルを生成しますが、保持しておきたいサムネイルを上書きしないように注意してください。多数の画像をループ処理する他の IM 以外の方法については、「バッチ処理 - Mogrify を使用しない」の例のセクションを参照してください。非常に大きな画像の場合、「-thumbnail
」リサイズ演算子はさらに進んで、実際のリサイズ操作を行う前に、最初に画像を最終的なサムネイルサイズの 5 倍に縮小します。これにより、サムネイルの生成がさらに高速化されます。ただし、JPEG 画像のサムネイルを作成する場合、初期画像サイズを制限するさらに優れた方法を使用できます。それは、画像全体を最初にメモリに読み込まないことです。「-define jpeg:size=
」設定 (上記の例で示されているように) は、非常に大きな JPEG 画像から読み込まれるデータ量を減らすための JPEG 画像ライブラリへの特別なヒントです。「JPEG ファイルの読み込み」を参照してください。![]() ![]() |
IM v6.5.6-0 より前は、このコーダー設定は「-size 」設定から抽出されていました。これにより、ユーザーが画像作成に「-size 」を使用したものの、JPEG の読み込みが予期しない結果になるという問題が発生しました。そのため、これは特別なコーダー設定に変更されました。IM の古いバージョンでは、この「二重」の役割のために、JPEG 画像を読み込む前に「 +size 」を使用して設定をリセットする必要がある場合があります。 |
-define jpeg:size=
」設定を使用することの代わりにはなりません。そのため、任意の入力画像形式のサイズを変更する推奨される方法は次のとおりです...
magick -define jpeg:size=240x180 input.img'[120x90]' \ -strip output_thumbnail.gif |
一般的なサムネイルの作成
一般的なサムネイルの生成 (特定の高さ)
大きなサンプル JPEG 画像を、高さ 90 ピクセルの GIF サムネイルに変換し、画像の縦横比を維持するために幅を自動調整します (250 ピクセルの幅制限内)。
|
![]() |
-thumbnail
」オプションを使用したことに注意してください。これは画像のサイズを変更するだけでなく、元の JPEG 画像に存在する可能性のあるプロファイルやコメント情報をすべて削除します。また、画像の初期縮小に「-sample
」リサイズ演算子を使用するため、高速でありながら、小さなサムネイルに適した結果を生成します。また、読み込まれる画像の最小「-define jpeg:size=
」を設定しました。これは JPEG ライブラリに渡され、(可能であれば) このサイズの 2 倍程度のサイズの画像が返されます。非常に大きな元の画像ではなく、コンピューターのメモリを必要以上にオーバーフローさせないようにするためです。私が使用する JPEG サイズヒントは、最終的なサムネイルの少なくとも 2 倍であるため、リサイズは引き続き適切な見た目の結果を生成します。「-auto-orient
」演算子は、デジタルカメラからの画像の場合、カメラの向きに従って正しく回転されるようにします。これは私が使用している「デスクトップ」画像には必要ありませんが、上記のデジタルカメラユーザー向けに含めました。ただし、特にドキュメントの写真を撮る場合など、真上または真下から見ている写真の場合、向きが間違ってしまう可能性があることに注意してください。結果は、特定の高さを持つが、可変幅を持つサムネイルになります。私は自分の Web ページでこのサムネイルを使用し、一連の画像がすべて高さで一致し、すっきりとした外観になるようにします。上記の 250 ピクセルの幅制限は重要です。設定を解除した場合 (例: 「-thumbnail x90
」を使用した場合)、IM は、Web ライン画像に示すような、非常に長くて細い画像のサムネイルを生成する際に問題が発生する可能性があります。その場合、小さなサムネイルではなく、画像の非常に長い拡大になってしまいます。IM のリサイズは最高の実装の 1 つですが (IM リサイズと他のプログラムの比較を参照)、結果が少しぼやけていると感じる人もいます (私も含めて)。そのため、「-thumbnail
」リサイズ操作後に、画像をわずかにシャープにする (「-unsharp
」を使用) ことで、上記の結果を改善できます。詳細については、「リサイズした画像をシャープにする -- Photoshop リサイズテクニック」を参照してください。ただし、実際にはすべて個人の好みの問題です。「
magick mogrify
」バージョンは、「magick
」コマンド (最初の入力画像なし) と同じですが、現在のディレクトリにあるすべての JPEG 画像の自動サムネイルを生成します。画像引数は、IM 自体がディレクトリをスキャンし、コマンドラインシェルではないように引用符で囲まれています。これにより、大量の画像を含むディレクトリでの「行制限オーバーフローエラー」を防ぎます。
magick mogrify -format gif -define jpeg:size=500x180 -auto-orient \ -thumbnail 250x90 -unsharp 0x.5 '*.jpg' |
![]() ![]() |
「magick mogrify 」は、同じ名前の既存の画像 (この場合は GIF 画像) を置き換えて、盲目的にサムネイルを作成することに注意してください。このコマンドを使用する際は、常に最大限の注意を払うことをお勧めします。処理を行う前に、常にバックアップコピーを作成することを推奨します。 |
![]() ![]() |
「magick mogrify 」が元のソース画像を上書きしないように、異なる形式 (「-format 」を使用) を指定する代わりに、「-path 」設定を使用して、別のサムネイルディレクトリを定義できます。両方の出力オプションを使用できます。 |
magick mogrify
」は、新しい画像を異なる接尾辞 (「-format
」) またはディレクトリ (「-path
」) で出力できますが、これらはこのコマンドで利用できる唯一のオプションです。画像のファイル名も変更する場合 (例えば、サムネイルまたは小さいバージョンの画像を示すために「_tn
」または「_sm
」を追加する場合) は、「magick
」を使用して、一度に 1 つずつ処理するシェルスクリプトを作成することをお勧めします。 私はこのようなスクリプトを作成して、同時に HTML インデックスも生成しました。サムネイルをフィットするようにリサイズ
自動サムネイル生成の別の形式は、画像のアスペクト比を維持しながら、「100x100
」などの固定サイズのボックスに合わせて画像を縮小することです。これはリサイズジオメトリ設定のデフォルトの意味です。ただし、すでにそのようなボックスに収まっている画像を拡大することは好みません。そのためには、ジオメトリ文字列に「> 」を追加する必要があります。
|
![]() |
サムネイルのパディング
次に最も一般的な要望は、特定の色の境界線 (通常は「black
」または「transparent
」ですが、これらの例では「skyblue
」を使用します) で画像を塗りつぶして、サムネイルを目的のサイズにすることです。例えば、400x300 ピクセルの画像を 100x100 ピクセルのボックスに合わせて縮小すると、通常 (上記の場合) 100x75 ピクセルのサイズになります。サムネイル画像を常に 100x100 ピクセルにするために、画像の上部と下部 (および念のために両側) にパディング境界線を追加したいと思います。これを行うにはいくつかの方法があり、IM v6.3.2 以降では、拡張演算子を使用するのが最適です。
|
![]() |
IM バージョン 6.2.5 以降では、ビューポート切り抜きを使用して、結果を背景色に平坦化することもできます。
|
![]() |
拡張とビューポート切り抜きの使用の主な違いは、最小限の仮想キャンバスが必要か、それとも領域全体を「パディング」するかです。画像をパディングする別の方法は、サムネイルを適切なサイズ (この場合は 128x128 の組み込み画像「granite: 」) の背景画像 (実際の画像、単色、またはタイルキャンバス) に重ね合わせることです。
|
![]() |
-composite
」操作は、上記の単一コマンドメソッドではなく、個別の「composite
」コマンドで実行する必要があります。ただし、画像処理の観点から見ると、上記はすべて同じことを行っています。サムネイルをフィットするようにカット
別の方法は、特定のサムネイルサイズに合わせて画像をパディングするのではなく、代わりに最終サイズに収まらない画像の部分を切り捨てることです。もちろん、これは元の画像の一部、特に画像の端を実際に失うことを意味しますが、結果は画像の中心部分の拡大されたサムネイルになります。これは通常 (常にではありませんが) 画像の主な主題であるため、実用的なサムネイル作成方法です。IM v6.3.8-3 以降、この操作を簡単にするための特別なリサイズオプションフラグ「^
」が追加されました。このフラグを使用してリサイズし、目的のサイズを超えてオーバーフローする画像の部分を切り取るだけです。
|
![]() |
![]() ![]() |
IM v6.3.8-3 より前、この特別なフラグが追加される前は、同じ結果を達成するには非常に複雑な工夫が必要でした。詳細については、「指定された領域を埋めるようにリサイズする」を参照してください。 |
エリアフィットのサムネイルサイズ
最後の 2 つの方法では、多くの場合、画像が非常に小さくなり、多くの余分なパディングが表示されるか、画像を完全に領域を埋めるために画像の多くを切り取ることになります。ただし、異なるリサイズフラグを使用することで、この 2 つの極端な中間にあるサムネイルを取得できます。例えば、100x100 ピクセルのサムネイルには 10,000 ピクセルがあります。ここで、リサイズに、そのサイズのピクセル数に近いサイズに画像をリサイズするように依頼する (リサイズ「@
」フラグを使用) と、わずかなパディングとわずかな切り取りの両方が必要になる画像が得られます。これにより、切り取りすぎることなく、結果のサムネイルのサイズを最大化します。例えば...
|
![]() |
指定された空間にフィットさせるまとめ
要約すると、特定のサイズの領域に画像をサムネイル化するための 3 つの方法の結果を以下に示します。3 つの方法すべてが、リサイズ引数/フラグに使用されているわずかな変更のみで、まったく同じコードを使用します。
![]() パディングフィット リサイズ、フラグなし |
![]() 領域フィット リサイズ、「@」フラグ |
![]() フィットするようにカット リサイズ、「^」フラグ |
正方形のパディングと切り抜き
上記パディングとクロッピングの方法は、画像を収めたい領域の最終的なサイズがわかっていることを前提としています。しかし、必ずしもそうとは限りません。場合によっては、画像を単に「正方形にする」ことが必要になります。これは、「パディング」で外側に広げる(外側の正方形)か、端を「削る」(内側の正方形)ことで行います。IMディスカッションフォーラムの画像の正方形化に関する議論から、いくつかの方法が開発されました。外側の正方形化は、画像の回転コピーを使用してより大きな背景キャンバスを作成するモザイクを使用することで実行できます。
|
![]() |
|
![]() |
|
![]() |
|
![]() |
![]() ![]() |
IMv7では、上記のような計算をクロップまたはエクステント引数の一部として直接実行できるようになり、画像のメタデータの損失を防ぐことができます。 |
手動クロッピング
私がWebページで使用するサムネイル画像を生成する通常の方法は、自動スクリプトと手動スクリプトの組み合わせです。最終的な画像の設定は次のとおりです。- 写真の元の、非常に大きなスキャンにはPNGまたはTIFFを使用します。または、デジタルカメラからダウンロードした元のJPEG画像を使用します。基本的には、アーカイブ用の変更されていない元のソース画像です。また、この画像のファイル名に「
_orig
」という文字列を含めるのが好きになりました。 - サムネイルをクリックまたは選択した場合にWebで表示できる、より小さなJPEG画像形式。この画像は、ほとんどのWebユーザーが表示するのに適したサイズである800x800ピクセルのボックスに収まるようにリサイズされます。通常、ファイル名に中サイズの画像を示す「
_md
」を追加します。 - そして最後に、固定の高さ90ピクセルで、幅が可変のGIFサムネイル。これにより、Webページの中央に配置されたサムネイルの行が適切に見え、使用しているブラウザのサイズに関係なく、ブラウザウィンドウの幅を自動的に埋めることができます。また、通常はサムネイルであることを示すために、画像のファイル名に「
_tn
」を含めるようにしました。
magick mogrify
」を使用して、Web表示可能なJPEG画像(中サイズ)を生成します。これにより、画像のダウンロード時間と表示サイズが、一般的なWebユーザー(モデム経由でログインしている可能性のあるユーザー)にとって実用的なものになります。これらの画像から、「magick mogrify
」を使用してサムネイルの初期セットを生成します。ただし、一般的な写真では、サムネイルの被写体が小さすぎて、表示しても効果的なサムネイルにならないことがよくあります。これを修正するために、自動生成されたサムネイルを調べ、約半数のケースで、自分で「被写体をズームイン」したサムネイルを手動で作成します。JPEG画像を読み込み、画像の主要な被写体を効果的に「ズームイン」し、画像の背景コンテキストの大部分を削除して、画像をクロップします。次に、これをスムーズ化してサムネイル化します。これは、「magick -thumbnail
」を使用するか、画像を視聴およびクロップしている同じグラフィックプログラム(通常は「XV
」、下記参照)で実行することが多いです。そのため、写真の中の人がほとんど見えないサムネイル(左)の代わりに、手動で被写体の周囲をクロップし、写真の主なポイント(右)を強調してからサムネイル化します。これにより、ユーザーは画像の内容をより明確に確認でき、その結果、より大きなJPEGバージョンの画像を実際にダウンロードして表示するかどうかをより適切に判断できます。
クイーンズランドカイトフライヤー、ロンとヴァル・フィールド | ||
![]() 自動的に 生成された サムネイル |
![]() |
![]() 手動でクロップ およびサイズ変更 サムネイル |
(元のスキャン写真の場合は、いずれかの画像をクリックしてください) |
magick mogrify
」は、手動で生成された可能性のある既存のサムネイルを上書きするため、手動でサムネイルを生成した後は、再度使用することはできません。「magick mogrify
」コマンドは便利ですが、多くの画像を上書きするため非常に危険でもあります。すべての画像に対してグローバルに「magick mogrify
」を実行する前によく考えてください。HTMLサムネイルページ
ディレクトリ内でサムネイル画像の整理が完了したら、「thumblinks
」という特別なperlスクリプトを使用します。これは、画像(JPEG写真とGIFサムネイル)を探し、HTMLリンク、さらには完全なHTML写真ページを生成します。スクリプトは、GIFサムネイルのサイズをHTMLで読み取って含め、サムネイルリンクの周りに事前準備されたヘッダーおよびフッターファイルを添付します。また、スクリプトは、ヘッダーファイルまたはフッターファイル自体に既存のリンクが見つかった場合、生成するリストからサムネイルリンクを削除します。これは複雑に聞こえるかもしれませんが、これにより、私のHTMLページ生成が非常に高速かつ柔軟になり、ディレクトリ内のすべてのサムネイル画像がそのディレクトリのインデックスページに追加され、インデックスヘッダー内の特定の画像にコメントを追加することもできます。また、ページをユーザーのウィンドウサイズに依存しないようにし、自動的に適合させます。「thumblinks
」スクリプトの出力の簡単な例については、Tomb of Castle Artworksを参照してください。そのようなリンクを生成するための簡単な例と出発点については、identifyコマンドの使用例を参照してください。FavIcon Webページリンクのサムネイル
WebサイトのトップレベルのWebページで、Webブラウザーがサイト全体に対して頻繁に探す「favion.ico
」アイコン。この画像は、特別な複数解像度画像形式であり、次のように作成できます。
magick image.png -alpha off -resize 256x256 \ -define icon:auto-resize="256,128,96,64,48,32,16" \ favicon.ico |
image.png
」は好きなもので構いませんが、正方形である必要があります。そうでない場合は、上記の最初のステップもそうする必要があります。128ピクセルや256ピクセルなどのより大きな解像度を含めることもできますが、それらを利用するブラウザーはほとんどありません。16ピクセルと32ピクセルのサイズは、このようなICOファイルでより一般的に使用されているため、これらに特に重点を置くと役立つ場合があります。また、多くのブラウザーは、ユーザーのブックマークファイルに保存するために使用するスペースを減らすために、画像を色を減らすことを忘れないでください。これにより、もう1つのポイントにたどり着きます。通常、最も小さい画像のみが使用され、さらに色の削減が行われるため、画像をできるだけ小さく、明確に定義しておくことをお勧めします。ICOファイル形式で画像を手動でサイズ変更する例を次に示します。
magick image.png -background white \ \( -clone 0 -resize 16x16 -extent 16x16 \) \ \( -clone 0 -resize 32x32 -extent 32x32 \) \ \( -clone 0 -resize 48x48 -extent 48x48 \) \ \( -clone 0 -resize 64x64 -extent 64x64 \) \ -delete 0 -alpha off -colors 256 favicon.ico |
前述のように、通常はWebサイトのトップレベルディレクトリにある「
favion.ico
」画像のみが使用されますが、次のHTMLタグをページのヘッダーに追加して、リンクサムネイル画像の場所を指定することもできます。
<LINK REL="icon" HREF="/path/to/favicon.ico" type="image/x-icon"> <LINK REL="shortcut" HREF="/path/to/favicon.ico" type="image/x-icon"> |
/path/to/favicon.ico
」は、Webページのサムネイル画像をブラウザーが取得する場所への絶対または部分的なURL/URIにすることができます。「REL="shortcut"
」の使用はInternet Explorer(IE9以前)に固有であり、公式にはHTML仕様の一部ではありません。「REL="shortcut icon"
」を使用して2つのHTMLタグを結合することは可能ですが、タグを分離しておくことで、firefoxなどのIE以外のブラウザーで非ICO画像ファイル形式(SVGなど)を使用できます。このhtml要素が使用されていない場合、Webサイトのトップレベルディレクトリにある「favicon.ico
」ファイルが代わりに使用されることに注意してください(存在する場合)。ICO画像形式は、すべての最新のブラウザーで普遍的に理解されています。Internet Explorerを除くすべてが、リンクサムネイルにJPEG、PNG、GIF画像ファイル形式も使用できます。FireFoxのように、アニメーションGIFやSVG画像ファイル形式を利用できるものもあります。ただし、これらの後者の形式では、通常、異なる解像度と色数で複数の画像を保持できないため、「favion.ico
」画像にはICOファイル形式を使用することをお勧めします。その他の非IMテクニック
手動画像処理に使用している「XV
」プログラムは、「.xvpics
」というサブディレクトリにサムネイル画像も生成します。このディレクトリ内の画像の形式は、プログラム独自の特別なサムネイル形式です(そのディレクトリ内のファイル名の接尾辞は無視されます)。これらのサムネイルは80x60ピクセルに制限されているため、「小さい」サイズ(「xv
」をハックしてより大きなサムネイルを使用する場合を除く--下記のリンク参照)です。IMは、「xv
」サムネイル形式(「NetPBM
」画像形式に基づいています)を理解しているため、XVを使用してすべてのサムネイルをすばやく生成し、JPEG画像のXVサムネイルをmagickでGIF画像に変換して、さらに処理できます...xv -vsmap & # generate thumbs with the "Update" button rm .xvpics/*.gif # delete XV thumbs of existing "gif" thumbnails magick mogrify -format gif .xvpics/*.jpg mv .xvpics/*.gif . # move the new "gif" thumbnails to original dir特に大型の最新ディスプレイで、XVサムネイルのサイズが小さいことにうんざりしている場合は、XVコードをハックできます。XVでより大きなサムネイルサイズを使用できるようにする私のXV修正メモを参照してください。私は個人的に120x90ピクセルのサムネイルを使用しています。
さらなる処理 -- 飾りを追加する
上記は、サムネイルをより面白くするためのほんの始まりにすぎません。基本的なサムネイル画像を超えて、境界線、回転、さらにはスタイルをランダムに選択して、サムネイルギャラリーをさらに面白くすることができます。このようなサムネイルへの追加は、「飾り」と呼んでいます。これは、洗濯後の衣服に見られる余分な糸くずのことです。つまり、サムネイルに不要な追加を追加しますが、Webページやインデックス画像がより面白くなる可能性があります。次の多くの方法と処理は非常に複雑であり、ImageMagickのさまざまな画像処理オプションに関するより深い知識が必要となる場合があることに注意してください。画像ラベルの追加
サムネイルの作成中に、サムネイルの上、下、またはサムネイルの上にラベルを追加することもできます。ただし、この種の画像処理については、ラベル付き画像の注釈でより詳しく説明しています。これらの例では、「-thumbnail
」または「-strip
」を使用することを忘れないでください。たとえば、「-resize
」ではなく...
|
![]() |
|
![]() |
thumbnail.gif
」画像を使用したり、サムネイルリサイズオペレーターを使用して画像からプロファイルやコメントを削除したりしていないことに注意してください。代わりに、「+clone
」、「+sample
」、および「-alpha
」を使用して、元の画像のメタデータも含む、より大きな透明な作業キャンバスを生成しました。これにより、画像の「comment」文字列を注釈「-annotate
」オペレーターで使用して、画像に重ねるテキストを提供できます。テキストのオーバーレイを構成した後でのみ、情報をクリーンアップして「-strip
」します。隆起したボタン
「-raise 」オペレーターは、基本的に長方形の画像の端を強調表示して、隆起したボタンを形成する目的で作成されました。これは、シンプルで高速、かつ効果的なサムネイル変換です。
|
![]() |
同じオペレーターには、「プラス」の形式があり、それを使用して沈んだようなハイライト効果を作成できます。
|
![]() |
バブルボタン
少し工夫すると、「-raise
」オペレーターを使用して、滑らかな「バブル状」の隆起したボタンを作成できます。
magick thumbnail.gif -fill gray50 -colorize 100% \ -raise 8 -normalize -blur 0x8 bubble_overlay.png magick thumbnail.gif bubble_overlay.png \ -compose hardlight -composite bubble_button.png |
![[IM Output]](thumbnail.gif)

![[IM Output]](bubble_overlay.png)

![[IM Output]](bubble_button.png)
境界線の追加
地味でシンプルな「-border
」オペレーターを使用して、画像の周囲に複雑なフレームワークを生成できます。
|
![]() |
シンプルなフレーム
同様に、「-frame 」オペレーターを使用すると、画像の周囲にフレームを簡単に追加できます。
|
![]() |
モンタージュフレーム
montageコマンドは、上記のすべてを、そしてさらに多くのことを行うためのより簡単な方法を提供します。サムネイル(またはサムネイルのページ全体)を生成できるだけでなく、ファイル名、ディスクサイズ、寸法、またはユーザーが指定した文字列などの情報を含むラベルをサムネイルに付けることができます。これは、「magick montage 」を使用して、フレーム付きのサムネイルを生成する簡単な例です。
wrjpgcom 」を使用して画像に追加されました。詳細については、非IM JPEG処理を参照してください。 |
![]() |
「magick montage 」だけでも、サムネイルの生成を非常に凝ったものにすることができます。
|
![]() |
ソフトでぼやけたエッジ
ビネットオペレーターは、画像の周囲にぼやけたエッジを追加する簡単な手段を提供します。
|
![]() |
|
![]() |
10\!
」距離スケーリングフラグによって制御されます。これは、IM v6.6.1-6でのみ追加されました。これにより、形状の付いた画像でも機能するという利点がありますが、距離計算でアンチエイリアスされたピクセルを正しく維持するには、より複雑な初期化が必要です。詳細については、距離を使用した形状のフェザリングを参照してください。ここでのフェザリングは純粋な線形グラデーションであり、シグモイド非線形コントラストオペレーターを使用して、さまざまな方法でより滑らかで先細りの外観を与えるようにさらに調整できます。また、アルファチャネルのみをぼかす前に、透明な仮想ピクセルを追加するのと同じ方法を使用して、ぼかしを使用した画像のフェザリングもできます。これにより、画像のより柔らかいフェザリングが生成されるだけでなく、画像の角が著しく丸められます。
|
![]() |
-level
」操作(透明度チャネルのみを調整)により、エッジは半透明だけでなく完全に透明になります。ただし、ぼかしによって生成されるシグモイドのような曲線のために、実際のエッジではゼロに向かって急激に低下します。また、角に加算的な効果があり、角が丸くなります。一方、鋭いくぼみのある形状の画像では、完全に透明なピクセルが半透明になる可能性があります。そのため、形状の場合は、元の画像に対して結果をマスクする必要がある場合があります(Dst-Inコンポジションを使用)。ただし、長方形のサムネイルの場合、結果は満足のいくものです。このタイプのフェザリングの使用例については、レイヤーサムネイルも参照してください。ぼかしたフェザーでレベル調整を行う代わりに、ぼかしたアルファチャネルを「50%
」でしきい値処理して、上記のサムネイル画像に擬似的な丸い角を追加できます。
|
![]() |
-blur
」操作が非常に遅くなる可能性があることにも注意してください。そのため、大規模な角の丸めにはこの方法はまったく推奨されません。より珍しいぼかしエッジ効果については、アルファチャネルのみで放射状ぼかしを使用できます。
|
![]() |
|
![]() |
丸みを帯びた角と整形された角
ソフトぼかしエッジ(上記参照)のしきい値処理は、GIFのブール透明度に適した丸い角を生成しますが、滑らかな「アンチエイリアス」された角は生成しません。丸い角またはその他の形状の画像を生成するための適切な方法は、実際に必要な形状のマスクを使用して各角を切り出すことです。次のLeif Åstrand <leif@sitelogic.fi>の方法では、画像マスク全体を乗算して適切な結果を生成します。
|
![]() |
|
![]() |
Red
」)を重ね合わせます。
|
![]() |
![]() ![]() |
「-flip 」および「-flop 」オペレーターが仮想キャンバスオフセットを正しく処理しないため、最後の例は、IM v6.6.6-5より前のバージョンでは失敗します。 |
|
![]() |
破れた紙のエッジ
Leif Åstrand <leif@sitelogic.fi>は、繊維質の紙(新聞など)から引き裂かれたように見えるエッジを生成するための次のIMコードを提供しました...
|
![]() |
|
![]() |
影の追加
「-shadow
」オペレーターを使用すると、任意の形状の画像の影の生成が簡単になります。たとえば、ここでは、サムネイルに半透明の色付きの影を追加します。
|
![]() |
ただし、ソフトでぼやけた影も簡単に作成できます。
|
![]() |
-background
」色を使用する必要があります。警告、上記は個々のサムネイルでは機能しますが、通常、複数のサムネイルを互いに重ねて表示したい場合は失敗します。その理由は、通常の画像と同じように、影が一緒に蓄積しないためです。複数のレイヤー化された画像からの影を処理する方法については、影のレイヤーを参照してください。厚みの追加
画像または形状に厚さを追加すると、ハードシャドウの追加(上記参照)のように少し見えますが、まったく同じではなく、適切に行うには追加の作業が必要です。これは、元の画像の下に複数回複製され、オフセットを増やして(「DstOver
」コンポジションを使用して)重ねられた、色の付いた画像のマスクを作成するため、実際には非常に難しいことです。これにより、画像の厚みが得られます。
|
![]() |
\( +clone ... \)
」の行はそれぞれ、画像を南南東方向に1ピクセルずつ追加しています。また、(少なくとも長方形の画像では)半透明ピクセルが含まれていないため、結果にはGIF画像形式を使用できます。この手法の大きな問題点は、厚さを変数引数として指定したり、さまざまな角度で指定したりするのが難しいことです。厚さを加えるための特定のスクリプトを作成しない限り、です。また、角度のある部分の端はアンチエイリアス処理されていないため、改善の余地は多くあります。ポラロイド風サムネイル
サムネイル画像をポラロイド写真のように見せたり、影を付けたり、テーブルの上に置かれているように少し回転させたりすることができます。
|
![]() |
上記よりも複雑なバージョンが、IM v6.3.1-6 で「-polaroid 」変換演算子として追加されました。たとえば...
|
![]() |
「-caption 」を追加したり、独自の影の色を設定したり、独自の回転(または回転なし)を指定したりすることもできます。
|
![]() |
|
![]() |
![]() ![]() |
上記の例の「 `magick ...` 」埋め込みコマンドは、-15から+15までのランダムな浮動小数点数を生成します。IMを数学計算機として使用する方法の詳細については、FX式を参照してください。代替として、ランダムな数値をシェル変数に割り当て、代わりに上記のコマンドに代入することもできます。 |
LightSteelBlue
」色です。
|
![]() |
|
![]() |
- フレーミングは上記にハードコードされており、サムネイル画像のサイズに依存します。実際のアプリケーションでは、フレーミングは上記のような写真スプレッドではなく、サムネイル生成段階に移動される場合があります。
- 「
-rotate
」もキャンバスのサイズを拡大するため、「-gravity center
」の位置からのオフセットを使用して配置しない限り、画像が追加される位置が変化します。 - 最後に、背景フレームを常に回転させることは、品質の面では良い考えではありません。すでに回転している画像を回転させると、重ね合わせる前に別々の各画像に対して1回回転させるよりも、結果にピクセルレベルの歪みが追加されます。
フレーミングテクニック
ここでは、IMの動作に関する非常に高度な知識を使用して、目的の結果を達成する、高度なフレーミングテクニックをいくつか見ていきます。セルフフレーミング(外部)
セルフフレーミングは、画像自体を使用して、フレーミングの色とパターンを生成し、画像をフレーミングするために使用できる手法です。つまり、追加されたフレームは固定されておらず、フレーミングされる画像とほぼ一致するように変化します。これを行うには、2つの方法があります。元の画像を拡張して外部フレームを作成するか、実際の画像の一部を使用して内部フレームを作成します。たとえば、画像を拡大して暗くしてから、元の画像を上に重ねると、非常に見栄えの良いフレームが得られます。
|
![]() |
![]() ![]() |
フレーミング画像を明るく(または暗く)するために、レベル調整を使用する代わりに、境界線を明るくまたは暗くする方法として、次のようなものを使用してフレームをカラーティントする方法があります... 「 -fill white -colorize 30% 」 |
|
![]() |
|
![]() |
|
![]() |
|
![]() |
imageborder
」を作成しました。自己フレーム (内部)
新しい境界線を追加するために画像を拡大するのではなく、画像自体の一部を境界線に変えることができます。すでに画像自体の中にフレームを追加する手法をいくつか見てきました。隆起ボタンおよびバブルボタンの手法は、「-raise
」演算子を使用してこれを行います。ここでは、元の画像の明るくぼやけたバージョンを生成します。これは、元の画像から生成されたマスクを使用して重ねられます。次に、その明るくぼやけたバージョンを画像の中心の変更されていない部分から分離するために、白いエッジが追加されます。
|
![]() |
|
![]() |
VividLight
」合成を使用して、原色をよりよく保持します。
|
![]() |
HardLight
」合成を、ぼやけたフレーム照明マスクで使用しました。
|
![]() |
![]() ![]() |
一部の光合成手法では、正しい照明効果を得るために、合成する前に画像をスワップする必要がある場合があります。 |
シンプルなボーダーオーバーレイ
単純なフレーム手法の1つは、画像の配置に使用できる、フレームの下に配置できる、派手なフレームまたは形状の画像を作成することです。たとえば、ここでは、画像よりもわずかに大きく、派手な形状の穴を持つ単純なフレームを生成します。形状は「WebDings
」フォント(文字「Y
」)から抽出されましたが、写真のフレーミングに使用できる派手な形状には、多くの可能なソースがあります。
|
![]() |
オプションで、影効果を使用して、フレームに少し奥行きを与えることもできます。
|
![]() |
単純なオーバーレイフレームができたので、「DstOver 」合成を使用して、フレームの下の真ん中に画像を下敷きできます。
|
![]() |
magick thumbnail.gif autumn_leaves.png +swap \ -gravity center -compose DstOver -composite \ border_leaves.gif |
![[IM Text]](thumbnail.gif)

![[IM Text]](../images/autumn_leaves.png)

![[IM Text]](border_leaves.gif)
DstOver
」を使用して2番目のメイン画像をフレームの「下」に配置したことに注意してください。これにより、元の画像ではなく、フレームが画像の最終的なサイズを決定します。ただし、これを行うと、メイン画像が持つメタデータ(同じ理由で)も失われます。サムネイルのメタデータ(著作権メッセージなどのラベルやコメントなど)を本当に保持したい場合は、フレームと同じサイズになるようにサムネイルをパディングし、次にデフォルトの「Over
」合成を使用してフレームをオーバーレイするのが最善です。そうすることで、サムネイルが「宛先」画像になり、その画像のメタデータが保持されます。バッジオーバーレイの例
ここでは、より複雑な事前準備されたオーバーレイの例を紹介します。今回は、IMフォーラムのディスカッション合成オーバーレイとマスキングから、正しくサイズ調整された画像(範囲を切り抜き方法として使用)を使用しています。画像自体は歪んでおらず、わずかに明るくしたり暗くしたり、円形に切り抜いたり、影を追加したりしているだけであることに注意してください。これらはすべて1つのオーバーレイ画像で行われます。これが実際のバッジや「ガラスの泡」である場合、画像も少し歪ませる必要があります(樽型歪みを使用するなど)。しかし、そのような歪みがなくてもうまく機能します。「バッジ」の例の次のステップについては、「マスクとペイントを使用したバッジ」を参照してください。これは、バッジの外側の背景に透明度を追加します。マスク 'n' ペイントテクニック
多くの場合、画像の周りに四角い境界線をオーバーレイするだけでなく、画像の端を透明に切り抜きたい場合があります。このためには、通常、少なくとも2つの画像を使用します。1つは、既存の画像に追加したい色、影、ハイライトを含むマスクされたオーバーレイです。もう1つは、元の画像から削除したい部分を含む画像です。2つの画像は、2つの異なる方法で適用できます。まず、画像を「マスク」して不要な部分を削除し、次にフレームをオーバーレイするか、またはフレームをオーバーレイしてから、元の画像とオーバーレイされた色の不要な部分を透明にマスクすることができます。どちらの方法を使用するかは非常に重要であり、使用する画像は特定のテクニック用に設計されます。ある方法の画像を間違った順序で使用すると、正しく機能しません。たとえば、より複雑な形状の境界線を作成しますが、今回は背景の設定については心配しません。
|
![]() |
さらに面白くするために、この「ぼやけた」境界線にランダムな色付けをしましょう。
|
![]() |
さて、境界線はありますが、境界線の外側と内側を表すものを定義する方法が必要です。基本的には、これらの2つの領域を定義するためのマスクが必要です。
|
![]() |
magick thumbnail.gif -alpha set -gravity center -extent 120x100 \ border_ellipse_mask.png -compose DstIn -composite \ border_ellipse_red.png -compose Over -composite \ border_mask_paint.png |
![[IM Output]](thumbnail.gif)

![[IM Output]](border_ellipse_mask.png)

![[IM Output]](border_ellipse_red.png)

![[IM Output]](border_mask_paint.png)
|
![]() |
|
![]() |
角が丸い境界線
上記で見たように、マスクとペイントのテクニックは、画像に色や「ふわふわ」を追加するだけでなく、最終的な画像を形作るために、部分を削除するためにも使用できます。これにより、画像に丸い角を追加する別の方法が提供されます。IMの「-draw
」演算子には、画像の周りに興味深いフレームを提供するのに使用できる「roundrectangle
」メソッドが付属しています。ただし、この描画メソッドの寸法を画像に合わせて調整する必要があります。IMには、画像サイズに基づいて数学的な計算を実行したり、抽出したりするメソッドがあります。長方形を配置する座標は、長方形を定義するために使用されるストローク幅の正確な「中心」です(浮動小数点値にすることもできます)。また、「ピクセル座標」(ピクセル座標と画像座標を参照)で指定されます。つまり、1,1の値は、上端と左端からの2番目のピクセルフォームを指しますが、より重要なことに、実際の上端と左端から1.5単位離れたピクセルの「中心」を指します。次に、ストローク幅(SW)を3として使用します。これにより、画像のすべての辺が3ピクセル大きくなります。つまり、長方形は、左上からSW/2 - 0.5
または1.0ピクセル、右下からImageSize + SW*1.5 - 0.5
または画像サイズ+ 4ピクセルに配置されます。ここでは、IM自体を使用してこれらの計算を行い、派手なFXエスケープを使用して必要な正確な描画コマンドを生成します。これは、後のコマンドで描画によって直接使用できるMagickベクターグラフィックスファイルとして保存されます。
|
![]() |
![]() ![]() |
別の方法(シェルまたはその他のAPI言語ラッパーを使用)で画像サイズを把握できる場合は、FX数学式を使用するのではなく、次の例に適切な描画パラメーターを直接代入できます。基本的に、上記は、このプロセス全体をサムネイルの実際のサイズから独立させます。直接ハードコーディングを含む他の方法も許容されます。 |
magick thumbnail.gif -border 3 -alpha transparent \ -background none -fill white -stroke none -strokewidth 0 \ -draw "@rounded_corner.mvg" rounded_corner_mask.png magick thumbnail.gif -border 3 -alpha transparent \ -background none -fill none -stroke black -strokewidth 3 \ -draw "@rounded_corner.mvg" rounded_corner_overlay.png |
![[IM Text]](rounded_corner_mask.png)
![[IM Text]](rounded_corner_overlay.png)
|
![]() |
|
![]() |
マスク 'n' ペイントを使用したバッジ
これは、上記のバッジオーバーレイの例で以前に使用した画像から開発された、はるかに複雑な「マスクしてペイント」の例です。2つの画像の生成は「ごまかして」行われ、IMフォーラムの合成オーバーレイとマスキングで議論されました。理想的には、2つの画像は一緒に開発されるべきでした。
magick thumbnail.gif -alpha set -gravity center -extent 90x90 \ badge_mask.png -compose DstIn -composite \ badge_shading.png -compose Over -composite \ badge_trans_bg.png |
![[IM Text]](thumbnail.gif)

![[IM Text]](../images/badge_mask.png)

![[IM Text]](../images/badge_shading.png)

![[IM Text]](badge_trans_bg.png)
ペイント 'n' マスクテクニック
「マスクしてからペイント」するのではなく、異なる画像セットを使用し、背景をマスキングする前に、最初に追加の色をオーバーレイすることができます。つまり、「ペイントしてからマスク」を実行できます。つまり、画像を取得し、最終的な境界線の色だけでなく、元の画像の外部の一部の部分またはすべての部分をマスクおよび着色する境界線をオーバーレイします。次に、別の「外側」または「クリッピング」マスクを使用して、結果の画像の不要な部分をすべて削除します。また、「オーバーレイ」画像と「マスキング」画像の両方が、境界線の外側のエッジとは別に内側のエッジを定義することに注意してください。その結果、1つの画像で境界線全体を完全に定義するわけではないため、少し使いにくくなる可能性があります。ただし、実装は簡単になる可能性があります。例:
magick -size 120x90 xc:none -fill black -stroke black -strokewidth 0 \ -draw 'ellipse 45,45 55,37 0,360' \ -channel RGBA -negate -blur 0x3 +channel \ \( granite: -auto-level -blur 0,0.7 \) \ -compose ATop -composite border_paint.png magick -size 120x90 xc:none -fill black -stroke black -strokewidth 5 \ -draw 'ellipse 59,45 56,40 0,360' border_mask.png magick thumbnail.gif -alpha set \ border_paint.png -compose Over -composite \ border_mask.png -compose DstIn -composite \ border_paint_mask.png |
![[IM Output]](thumbnail.gif)

![[IM Output]](border_paint.png)

![[IM Output]](border_mask.png)

![[IM Output]](border_paint_mask.png)
ページカールの角
Fred Weinhaus 氏は、PageCurl という特別なシェルスクリプトを作成しました。これは、非常に複雑な数学(シェル内)を使用して、既存の画像にシンプルなページのめくれを追加するものです。例えば...
|
![]() |
-i "pagecurl"
」オプションを使用します)。
|
![]() ![]() |
pagecurl_overlay.png
」と「pagecurl_mask.png
」の2つの画像ファイルを作成します。入力画像自体は、必要なのがマスキング画像であるため重要ではありません。「ページのめくれ」の結果は、特別な「null:
」画像ファイル形式を使用して破棄されます。
|
![]() |
-gravity
」設定により、2つのオーバーレイ画像が右下隅に配置されます。また、特別なDefine設定「compose:outside-overlay=false
」は、小さい画像で覆われていない画像の領域がマスク画像によって消去されるのを防ぎます。詳細については、Outside-Overlay設定を参照してください。これを多くの画像に適用する場合は、「magick mogrify
」を使用できます。これには、「-draw
」を使用してMogrify Alpha Compositionを行う特別なテクニックを使用します。ただし、この構成方法は特別なdefine設定を理解しないため、すべて同じサイズの画像、オーバーレイ、およびマスクでのみ機能します。
pagecurl -e 0.5 -i /tmp/pagecurl {one image} null: magick mogrify {magick mogrify -format and -path options} -alpha set \ -draw 'image Over 0,0 0,0 "/tmp/pagecurl_overlay.png"' \ -draw 'image DstIn 0,0 0,0 "/tmp/pagecurl_mask.png"' \ {all images to be pagecurled}... |
装飾的な角のオーバーレイ
ここでは、「ダブルマスキング」テクニックを使用して、画像全体に1つの大きなマスクやフレームを適用するのではなく、異なる領域で画像をさまざまな方法で変更する方法を少し詳しく見ていきます。この場合、角のみをダブルマスクします。残りの境界線(一致させるため)は別に追加されます。![[IM Output]](../images/fancy_orig.gif)
![[IM Output]](../images/fancy_sub.gif)
![[IM Output]](../images/fancy_add.gif)
|
![]() |
![]() ![]() |
追加される透明な境界線を保持するには、「-compose 」設定をデフォルトの「Over 」ではなく「Copy 」に設定する必要があることに注意してください。設定しないと、透明度は次に加えられる境界線の色(この場合は「黒」)で塗りつぶされます。詳細については、Borderオペレーターを参照してください。 |
ペイント 'n' マスクを使用したバッジ
バッジオーバーレイとバッジマスク&ペイントで以前に見たのと同じバッジ画像処理は、ペイントしてからマスキングすることでも実行できます。ここでは、最初にすべての色とシェードをペイントし、次に画像の最終的な透明度をマスクで取り除きます。
magick thumbnail.gif -alpha set -gravity center -extent 90x90 \ badge_paint.png -composite badge_shape.png -compose DstIn -composite \ badge_paint_mask.png |
![[IM Text]](thumbnail.gif)

![[IM Text]](badge_paint.png)

![[IM Text]](badge_shape.png)

![[IM Text]](badge_paint_mask.png)
ライティングマスクテクニック
ガラスバブルボタン
サムネイル処理における次のレベルの複雑さは、非常に複雑な照明効果の適用です。ここでの難しい点は、画像への照明効果の適用というよりも、適切なシェーディング効果の生成です。たとえば、アクアエフェクトを使用すると、サムネイルに非常に複雑なシェーディング効果を与え、「ガラス」の泡で囲まれているように見せることができます。また、これは丸い角を持つサムネイルでより効果的です。サムネイル画像用に、純粋なグレーの色を使用して丸い角のマスクを生成してみましょう。
|
![]() |
|
![]() |
|
![]() |
ただし、照明マスクに影の効果を直接追加することもできるため、これはさらに進めることができます。ただし、追加する色は純粋な黒でなければならず、選択した照明効果の構成によって、照明マスクが黒の場合に画像が完全に黒になるようにする必要があります。ただし、これは実際には影の効果が通常画像に追加される方法であるため、「照明効果マスク」に影を直接追加するだけで問題ありません。同じことは照明「フレア」の追加にも当てはまりますが、フレアオーバーレイには白いピクセルのみを使用します。本質的に、「照明効果画像」は、再び2つのマスク&ペイント画像を単一の画像にマージできます。次の例で見るように。
照明効果を使用したバッジ
マスク&ペイントを使用したバッジテクニックの画像を使用して、純粋なグレーのキャンバス画像に適用して、「マスクされた照明効果」画像をすばやく生成しました。実際には、別のスタイルのマスキング(ペイント&マスクを使用したバッジ)も同様に簡単に使用できたはずです。次に、目的の結果を再現するサムネイルに単一のマスキング画像を適用します。
# merge "mask 'n' paint" images with a gray image, # to create a "lighting mask" magick -size 90x90 xc:gray50 -alpha set \ badge_mask.png -compose DstIn -composite \ badge_shading.png -compose Over -composite \ badge_lighting.png # Apply the single "lighting mask" magick thumbnail.gif -alpha set -gravity center -extent 90x90 \ badge_lighting.png \ \( -clone 0,1 -alpha Opaque -compose Hardlight -composite \) \ -delete 0 -compose In -composite \ badge_final.png |
![[IM Text]](thumbnail.gif)

![[IM Text]](badge_lighting.png)

![[IM Text]](badge_final.png)
歪みのあるマスキング画像...
さらに驚くべきことに、陰影の色はグレースケール画像であるため、照明効果を1つのカラーチャンネルとアルファチャンネルマスクに圧縮することができます。これにより、他の画像処理効果のために2つのカラー画像チャンネルを解放できます!つまり、単一の「マスキング画像」に他のものを格納できるのです。具体的には、同じマスク画像に歪み効果を追加できます!詳細については、まさにこれを行う統合歪み画像を参照してください!一種の究極のマスキング画像です。エッジ画像を使用したフレーミング
![[IM画像]](../images/oak_frame_sample.jpg)
フレームエッジ画像
画像をフレーミングするために使用できる画像には多くの種類があります。たとえば、これはマイケル・スレート<slatem_AT_posters2prints.com>が提供した画像から修正した「金色の縁取りのある薄い黒」フレームです。2つの照明効果を提供するために2つの画像があり、1つは上と左のエッジ用、もう1つは下と右のエッジ用です。ただし、画像の長さに沿って色は変化しません。したがって、このフレームをタイル状に並べるか、ストレッチして必要な長さを作成できます。同様のフレーミングピースのセットは、この「薄い装飾的な金」のタイル状にできる境界線画像です。これらの画像には細かいディテールが含まれているため、画像を目的の長さに単純にストレッチすることはできません。また、これらのピースを長方形回転して他のエッジピースを作成することもできません。そうすると、細かいディテールの陰影が間違ってしまうからです。斜め転置歪みを使用すると、他のエッジに対して正しい陰影が得られるはずです。画像の両側で全体的な陰影と細かいディテールの陰影が正しいことを確認するために、結果を確認する際には特に注意が必要です。最後に、フレーミング画像は、この「竹」のタイル状フレーム画像のように、すべてのフレーミングエッジを生成するために使用できる単一の画像で構成されている場合があります。1つの画像だけで済む理由は、フレームに特定の「内側」または「外側」がないためです。ただし、フレームには全体的な照明効果と細かいディテールの照明効果の両方があり、他のエッジの画像に対して画像を回転/反転/転置する方法に注意する必要があります。このフレームのより大きな問題は、単純にタイル状に並べると、マクロディテールが非常に規則的になることです。そのため、より自然な外観にするために、タイルオフセットをランダム化したり、追加するピースの長さをランダム化する必要がある場合があります。これについては後ほど詳しく説明します。ご覧のとおり、フレーミング画像にはさまざまなスタイルがあり、選択したエッジング画像を(照明画像に関して)正しい方法で処理し、他の不足しているエッジング画像を生成する際には注意が必要です。フレーミングピースの延長
これらのフレーミング画像のいずれを使用する場合でも、画像の寸法全体をカバーする長いピースを作成する必要があります。これを行う方法は基本的に2つしかありません。リサイズ(アスペクト比を維持しない)を使用してフレーム画像を単純にストレッチして、適切な長さを取得できます。これは、内部ディテールがない上記に示す最初のピースのセットには機能しますが、提示された他のフレーミング画像には適切ではありません。基本的には、内部ディテールが歪み、最終的な画像の見た目の妨げになる可能性があります。ただし、他の延長方法であるタイルは、上記のすべての画像の場合と同様に、反復パターンまたはディテールを持つフレーミング画像に使用できます。独自のフレーミングピースを作成する場合は、タイルが適切に一致し、ピクセル境界に一致するように注意して、フレーム画像の均一な色とディテールの適切な周期を確保してください。そうしないと、タイルの繰り返しが原因で、タイル間に人工的な継ぎ目ができてしまいます。現実の世界では、額縁職人も長いピースを作るためにピースを結合する際に同じ問題を抱えています。基本的には、2つの異なる色の木材や、非常に異なる木目模様を入手するのが非常に簡単で、それらを「鳩尾」で合わせると、継ぎ目が非常に目立つようになります。ですから、この問題に悩まされているのはあなただけではありません。「竹」のフレーミング画像はタイル状にする必要があります。ただし、ディテールが画像の狭い領域に限定されているため、いくつかの興味深いランダムなタイル効果を得ることができ、それを取り除くにはピースの長さのランダム化や短縮が必要になる場合があります。ただし、これについては詳しく説明しません。これについては各自で試してみてください。例として、また、ほぼすべてのフレーミング画像で機能するため、必要な長いエッジ長さを生成するために、単純な一定タイル法を使用します。過度に単純な追加
上記の単純な「竹」フレームは、適切な長さにタイル状に並べ、画像を結合することで、簡単に延長できます。タイル化は、読み込まれている画像をタイル化するための特別なタイルキャンバス画像ジェネレーター「tile:
」によって簡単に行われます。
|
![]() |
|
![]() |
拡張されたオーバーレイフレーム
また、元の画像の境界を超えてフレームを拡張することで、このタイプのエッジフレーミングをさらに見栄えよくすることができます。これは、「我が家」タイプの写真でよく見られます。これを行うには、まず、より長いフレームピースが重ねられるように、追加のスペースをたくさん使用して元の画像を拡大する必要があります。
magick thumbnail.gif -alpha set -bordercolor none -border 34 \ \( -size 144x14 -tile-offset +30+0 tile:bamboo.gif -transpose \) \ -geometry +20+10 -composite \ \( -size 144x14 -tile-offset +45+0 tile:bamboo.gif -transpose \) \ -geometry +154+0 -composite \ \( -size 178x14 -tile-offset +60+0 tile:bamboo.gif \) \ -geometry +0+20 -composite \ \( -size 178x14 -tile-offset +0+0 tile:bamboo.gif \) \ -geometry +10+124 -composite \ frame_overlaid.gif |
![[IM Output]](frame_overlaid.gif)
45度の角の接合部
より良い解決策は、フレームの各コーナーに実際に45度の接合部を作成するように、サムネイルの周りにフレーミング画像を追加することです。これは簡単ではなく、フレーム、3Dのような境界線と呼ばれる魔法のような演算子を再発見するまで、多くの描画およびマスキング方法を試しました。したがって、解決策は簡単でした。画像と「-frame 」を読み込み、フレーミングする領域のテンプレートを作成します。
|
![]() |
たとえば...
|
![]() |
|
![]() |
|
![]() |
-tile-offset
」を追加する必要があります。![]() ![]() |
タイルオフセット設定は、IMバージョン6.3.9-9より前のバージョンでは、XオフセットがXとYの両方のオフセット値に使用されていたため(指定されたY値は無視されました)、破損していました。つまり、上記例では、IMの古いリリースでは下と右のエッジが誤ってタイル化される可能性があります。 |
|
![[IM Output]](framed_script.png)
frame_edges.tar.gz
」)。このtarファイルには、スクリプトと、スクリプトが処理および使用する方法を理解している一連のフレーミング画像が含まれています。また、フレームと画像の間に追加の「段ボール」境界線を追加します。