ImageMagick 使用例
|
|
|||||||||||||||
![]() |
|
|
![]() ![]() |
ヒント、コツ、または追加情報 | ![]() ![]() |
上級ユーザー向け | ![]() ![]() |
旧バージョンに関する警告 |
ImageMagick の例 - はじめに
ImageMagick とは何ですか?徹底的な概要
ImageMagick は、画像のバッチ処理を目的として設計されています。つまり、画像処理操作をスクリプト(シェル、DOS、Perl、PHP など)で組み合わせることができるため、多くの画像に操作を適用したり、Web アプリケーション、ビデオ処理ツール、パノラマジェネレーターなどの他のツールのサブシステムとして使用したりできます。GUI 画像エディターではありません。
ImageMagick は、まず第一に、画像から画像へのコンバーターです。それが本来の設計目的です。つまり、ほぼすべての画像フォーマット(変換できない場合はお知らせください)の画像を他の画像フォーマットに変換します。
しかし、それはまた、画像処理アルゴリズムのライブラリでもあります。これらには、コマンドラインやシェル/DOS スクリプト(これらの例ページで示されています)を介して、または C、C++、Perl、Ruby、PHP などの多数のプログラミング言語を介してアクセスできます。参照:ImageMagick API。
速度は IM の主要な機能ではありませんでした。IM は生成される画像の品質を重視しています。妥当な時間で画像を変換できないという意味ではありません。単に驚くほど速いわけではないということです。このため、特に機能が限られている画像フォーマットに画像を圧縮しようとすると、IM は特定の処理操作を実行するのに時間がかかる場合があります。
ImageMagick は、主に「ラスター」と呼ばれる長方形のピクセルアレイ形式の画像を扱います。Postscript や PDF などの「ベクター」画像フォーマットも処理しますが、読み込む際にそれらの画像をラスターに変換し、保存する際にラスターの周りにベクター画像ラッパーを生成するというコストがかかります。その結果、デフォルトの設定を使用すると、ベクター画像はしばしば不適切に処理されます。ただし、この状況を改善するために特定のオプションを使用できます。参照:ベクター画像フォーマットに関する一言。
これらの ImageMagick 使用例について
これらのページは、1993 年に最初に開始し、ほぼ同時期に登場した新しいファッショナブルなワールドワイドウェブに掲載した私の ImageMagick のヒントとコツのコレクション ページから開発され、その続きになっています。IM の多くの側面に関する情報や、これらのページに含まれていないノートは、そのドキュメントにまだ存在します。ただし、現在のページは閲覧できるように設計されていますが、ヒントとコツのドキュメントは私自身の啓発のためだけに作成されました。したがって、場所によっては曖昧または混沌としている可能性があります。閲覧、学習、およびコメントを歓迎します。
その他の例は、IM フォーラム でのユーザーからの質問への回答から取得または開発されたか、さまざまな問題に対する解決策として私に提供されました。
他の IM ユーザーからの提案とメールを心待ちにしています。そのようなメールは、一般的にこれらの例ページの改善と拡張につながります。
コマンドライン環境
すべての例は、UNIX、特に BASH スクリプティングを使用する GNU/Linux システムで使用するために記述されています。その結果、いくつかの例ではシェル「for-do」ループを使用しています。ほとんどの例では、行末にバックスラッシュ「\
」を使用して、コマンドを次の行に継続しています。長いコマンドは、適用されている手順をさらに強調するために、個別の行に分割されています。
ただし、一部の文字の処理方法を変更することで、これらの例をPC Windows バッチスクリプトから引き続き使用できます。わずかな変更を加えることで、これらの例をPHP スクリプトの「system
」呼び出しから直接実行することもできます。
これらの代替環境で ImageMagick コマンドを使用する方法の詳細については、Windows での使用方法 と API とスクリプティング を参照してください。貢献とテスト例を歓迎します。
PerlMagick とその他の API
これらの例のいずれかを、Perl、C、C++、Ruby、PHP などの言語から IM API を使用して適応することも可能です。まずコマンドラインで試してみて、正しく動作してから、使用している特定の API に操作を変換することをお勧めします。
IM バージョン 6 で状況は大幅に改善されましたが、コマンドラインは実際には一度に 1 つの画像シーケンスしか処理しません。ただし、API にはこれらの制限がなく、複数の画像シーケンスを個別にまたはまとめて操作して、より複雑な操作を実行できます。この機能により、IM API を使用してこれらの例を実装することが容易になり、多くのコマンドラインの例で必要とされる一時ファイルとして画像を保存する必要がなくなります。API を使用する場合、永続的な画像と半永続的な画像のみをディスクに保存する必要があります。
基本的に、例ページを起点として、ImageMagick で何が可能かを確認してください。次に、コマンドラインで実行したいことを定式化してから、スクリプトや API コードで操作をコーディングします。スクリプトや API コードでは、大規模な変更を加えることが困難です。
また、API コードには徹底的にコメントを付け、可能であれば、実行しようとしているコマンドライン相当を追加することをお勧めします。そうすることで、コマンドラインを使用した場合の結果と結果を照合して比較できます。これにより、特に Core ImageMagick ライブラリの画像処理が改善された場合に、後で発生する可能性のある問題をデバッグできます。
入力画像と結果のダウンロード
IMの例題コマンドの入力画像として、できる限りIMに組み込みの画像(例:「logo:
」や「rose:
」)を使用するか、IMコマンドを使って入力画像を生成するように努めています。また、前のコマンドの出力を後続の例題で再利用することもよくあります。このため、通常は例題を試すために「テスト」画像をダウンロードする必要はありません。
しかし、このような生成された画像や組み込みの画像は、常に便利とは限りません。そのため、外部画像を使用する場合は、その入力画像やそのセクションの後続の例題の結果を再利用する傾向があります。
場合によっては、元のソース画像が表示されるか、大きな画像の場合はソース画像へのリンクが提供されます。入力画像がよく知られているか明白な場合は、最終的な結果画像のみが表示されることが一般的です。
表示されているIMの例題コマンドのほとんどは、それらが表示されるのと同じWebディレクトリで実行されます。つまり、表示されているコマンドは、画像の生成に使用された実際のコマンドです。そのため、ページのURLを変更して、例題で使用されている入力画像をダウンロードしたり表示したりすることができます。外部ソース画像の追加のコピーは、「images」および「img_photos」サブディレクトリにも配置されています。これらの画像のFancy Photo Indexの例も参照してください。
例題によってテキスト出力または画像情報が生成された場合、テキストファイルに保存され、Webページに表示するためにその画像が生成されます。テキスト出力画像を選択すると、コマンドによって実際に生成されたテキスト出力のコピーにリンクされます。
これらの例題ではすべて、出力画像を選択すると、例題コマンドによって実際に作成された画像をダウンロードできます。ただし、すべてのブラウザが使用されているすべての画像形式を認識するわけではないことに注意してください。
外部画像ソース
ちなみに、これらの例題で使用されているソース画像のほとんどは、Anthony's Icon Library、特に背景タイル、大型クリップアート、およびドラゴンセクションから取得しています。(ドラゴンが好きなんです!)補足:ウェブサイトが新しいサーバーに移行中のため、これらのページはオフラインになっている可能性があります。
このライブラリは実際にはWWWよりも前に作成されました。1991年に、X Window Systemで使用するための優れた、クリーンなアイコン画像の不足のために作成しました。WWWの出現により、状況は当然変化しましたが、私の元のライブラリはまだ存在し、積極的に成長していませんが、画像ソースとして利用可能です。
特定の画像や大きな画像は、特定の例題の作成者によって提供されています。このような例題の作成者は、寄稿者セクションまたはページの下部に記載されています。
特定の画像を探している場合は、Google画像検索(または同様のもの)を使用して適切な画像を見つけることをお勧めします。もちろん、自分の目的のためにIMを使用してそのような画像を変換またはサイズ変更できます。ただし、商業目的でそのような画像を使用する予定がある場合は、著作権に注意する必要があります。
Webページ上のPNG画像
![[IM Output]](images/test.png)
多くの例題では、このテキストの右側に表示されているようなPNG形式の画像を使用しています。PNG画像形式は、半透明ピクセルを含む画像をサポートしており、これは他の画像形式ではほとんど提供されていない機能です。また、非常に理解しやすい画像形式であり、そのため、今日のほとんどの画像プログラムやWebブラウザで使用できます。
ただし、一部のWebブラウザ(特にMicrosoft Internet Explorer v6)は、透過PNG画像を正しく処理しません。このため、Web上の画像には一般的にJPEGとGIF形式を使用し、半透明ピクセルを持つ画像を生成する場合、または後続の例題に必要な正確な色が必要な場合にのみPNG形式を使用します。
IE v6ブラウザでPNG画像を表示できるようにするために、複雑なJavaScriptを使用した特別な「スタイルシート」を使用しています。これについては、PNG with transparency for IEを参照してください。技術的には、これはIEの問題であり、ImageMagickの問題ではありません。
上記の例題に表示されている画像は、シェルスクリプトを使用して生成された特別なPNG形式のテスト画像です。通常、コマンドは結果をディスプレイに出力し、このようにWebページに出力することはありません。
注意深く見ると、半透明の色を通してチェッカーボードパターンが見えます。ただし、画像全体は完全に不透明です。そのため、この手法は、すべてのディスプレイ、Webブラウザ、および画像ビューアで機能するはずです。
IM v6.0.2以降、「magick display
」プログラムは、このような処理を自動的に実行します。ただし、カラテーブル(つまり、GIF)を使用する画像は、このように処理しないようです。上記の「x:
」出力画像形式を使用すると、保存せずに画像が直接画面に表示されます。詳細については、出力表示の表示を参照してください。
フォントの使用
これらの例題で使用しているフォントは、長年にわたって見つけて保存してきた少数のTrueTypeフォントのコレクションからのものです。これらのいくつかは著作権の対象となるため、オンラインで公開することはできません。
ただし、利用可能な他のフォントを代わりに使用することは歓迎します。例題は(画像サイズを多少変更する必要があるかもしれませんが)、システムで使用可能な適切なフォントであれば、どのフォントでも機能します。Microsoftの「Arial」フォント、または「Times-BoldItalic」でも、ほとんどのシステムで機能するはずです。
現在お使いのIMバージョンで使用可能なフォントを確認するには、次のコマンドを実行します…
magick -list font |
警告:要求されたフォントが見つからない場合、ImageMagickは以前はデフォルトフォント(通常はArialまたはTimes)をサイレントに代用していました。今もそうしていますが、現在は警告が表示されます。そのため、事前にフォントをテストして、目的のフォントであることを確認し、デフォルトフォントではないことを確認してください。
私のLinuxシステムでは、特別なPerlスクリプト「imagick_type_gen
」を使用して、「.magick
」ホームディレクトリのサブディレクトリに保存された「type.xml
」ファイルを作成しています。ImageMagickはこのファイル(XML形式のフォントリストが含まれている)を使用してフォントを検索します。このスクリプトは「locate
」(新しいフォントを追加したばかりの場合は最初に「updatedb
」を実行してください)を実行し、システムで使用可能なすべてのフォントを記述します。この設定により、特定のフォントファイルへのフルパスではなく、使用するフォントの名前を指定するだけで済みます。
|
![]() ![]() |
IM v6.1.2-3より前のバージョンを使用している場合は、「type.xml 」ファイルの名前は「type.mgk 」でした。 |
これらのIM例で使用されているフォントは、Montage of Example Fonts Exampleにリストされています。個人的にはCandiceがお気に入りなので、かなり頻繁に使用しています。
![]() ![]() |
「Candice 」フォントまたは私が使用している他のフォントがお気に召した場合は、Free Fontsまたは1001 Fonts .comから入手してください。 |
例題ページの更新
これらの例題ページは、継続的な改善サイクルにあります。一般的に、関心が他のものに向くと、これらのページへの追加を長期間停止することがあります。
多くの場合、これらの例題は最新のベータ版のIMを使用して再構築され、一般的にリリースされる前に各バージョンのIMに表示される可能性のある変更やバグを確認できます。ただし、表示されている例題画像は、指定されたIMコマンドが私のシステムで生成したものです。異なる結果が得られた場合、お使いのIMははるかに古いバージョン(古いバグがある)であるか、正しくインストールされていない可能性があります。
私に電子メールを送信したり、ディスカッションフォーラムでImageMagickの側面について議論したりすると、一般的に新しい例題や新しいセクション全体がこれらの例題に追加されます。議論が多ければ多いほど、例題は良くなります。
IMで何か興味深いことを行っている場合は、共有して、その技術の例をIMコミュニティの他のユーザーに提供することを許可してください。IMの使用における最大の進歩のいくつかは、あなたのようなユーザーから来ています。
特別な感謝
何ヶ月もかけて、アップグレード、バグ修正を行い、私の奇抜な提案(特にコマンドライン処理、括弧、画像シーケンス演算子、GIFアニメーション処理に関する私の主要な提案)に我慢してくれたCristyに特別な感謝を申し上げます。
彼は、バージョン7を最高の、そして最も高度なコマンドライン画像処理プログラムにするという素晴らしい仕事をしました。ほとんどのユーザーはそれを感謝しないかもしれませんが、私は彼がIMに費やした努力を間違いなく感謝しています。
また、JPEG形式とライブラリ、アフィン行列演算子、およびMagick Vector Graphics全般に関する議論で非常に役立ったGabe Schafferにも感謝したいと思います。
そして、PNGコーダーモジュールを作成し、カラー量子化とディザリングに興味を持っていたGlenn Randers-Pehrsonにも感謝します。彼は最初にIMに「ハーフトーン」ディザリングを追加した人物であり、後で改訂して拡張し、順序付けられたディザリング設定ファイルに新しいディザリングを追加しました。
最後に、問題、提案、解決策を抱えている多くの人々(一般的にIMユーザーフォーラムで潜んでいる)にも感謝したいと思います。現在では、多くの人々がIM Examples全体でアイデアや提案の貢献者として名前を挙げています。
また、フォーラムで定期的に質問に答えてくれる人々、例えば「Bonzo」と彼のウェブサイトRubbleWebs(PHPスクリプトからのIMコマンドの使用について詳しく説明)、そして「scri8e」と彼のウェブサイトMoons Stars(グリッターと星の処理について)、そしてPete「el_supremo」にも感謝します。
画像処理の初期から研究者であるFred Weinhausにも特別な感謝を申し上げます。彼は一般画像歪み演算子の初期実装に大きく貢献しました。Fred's ImageMagick Siteでは、将来のIMに追加するための概念実証として、FredのImageMagickスクリプトを見ることができます。
また、デジタル画像処理の専門家であるNicolas Robidouxにも感謝します。彼は楕円加重平均リサンプリングを改良し、一般画像歪みの出力を大幅に向上させました。
そして最後に、ImageMagickの多くのユーザーの皆様へ。フォーラムやウェブ上で、プロジェクトの一部として使用しているIMコマンドを他の人に見せてくださった皆様に、感謝申し上げます。皆様の発見を共有してくださるご意欲と開放性には敬意を表します。
さて、「あれやこれや」はさておき。いくつかの例を見てみましょう。