Nuxeo Platformで画像変換の最適化


Thu 08 December 2016 作成者: Michael Vachette

画像変換を最適化することは、グローバルなメディアやニュース出版機関が直面する共通の課題です。過去数週間、メディア関連の組織が活用できる使用例に取り組んでいます。Nuxeo Platformで利用できる主な機能として、ほぼリアルタイムでのインデックス作成と変換を使用して1時間に15,000枚の高解像度JPEG画像をインポートする機能があります。このような機能により、画像を取り込んだ後すぐにアセットを検索してプレビューすることができます。Nuxeo Platformが(ハイパースケーラブルなアーキテクチャのおかげで)これを処理できることは間違いありませんが、最小限のインフラストラクチャで実現できるかが実際の問題でした。

Nuxeo Platformは、画像の変換処理のためにImagemagickを統合しています。これは、画像変換に役立つ多彩なツールです。ここでは、サイズ変更機能に焦点を合わせます。プラットフォームに画像がアップロードされると、サムネイル、プレビューなど、元の画像の解像度を変えるためにいくつかの変換が実行されます。プラットフォームで使用されるデフォルトのIMコマンドは非常に汎用的なので、事実上どんな状況でも動作します。プラットフォームをいつ使い始めてもよいですが、プラットフォームに精通していれば、特定の使用例に合わせて最適化することができます。

デフォルトのコンバータをオーバーライドするのは、Nuxeo Studioで再定義するのと同じくらい簡単です。以下は、デフォルトの場合よりもCPUの消費量が少ないコマンドの例です。

<extension point="command" target="org.nuxeo.ecm.platform.commandline.executor.service.CommandLineExecutorComponent">
    <command enabled="true" name="jpegResizer">
      <commandLine>convert</commandLine>
      <parameterString>-define registry:temporary-path=#{nuxeo.tmp.dir} -depth #{targetDepth} -scale #{targetWidth}x#{targetHeight} #{inputFilePath} #{outputFilePath}</parameterString>
      <installationDirective>You need to install ImageMagick.</installationDirective>
    </command>
</extension>

AWSのc3.xlarge(4CPU/8GB RAM)インスタンスで、平均サイズ5MB、解像度18MPの150個の画像セットを使用して、デフォルトコンバータと最適化コンバータの両方のテストを実行しました。以下がその結果です。

サイズ変更の比較
デフォルトと最適化JPEGサイズ変更コンバータとを比較

数行設定しただけで、スループットが100%向上しました。これは素晴らしい結果です。しかし、まだまだあります。Imagemagickには、画像のサイズを変更するためのさまざまなアルゴリズムが用意されています。サンプルスケールサイズ変更の3つについて最も速いものから最も遅いものまで考えてみましょう。

アルゴリズムの比較
サイズ変更アルゴリズムの比較

上記の数値は、サイズ変更からスケールへ切り換えると、スループットは倍になり、またサンプルではさらに向上することを示しています。ただし、出力画像が使用できる程度の改善である場合にのみ、これらは意味をなします。

結果
出力画像

明らかに、サンプルではあまり良い結果が得られていません。一方、スケールサイズ変更の違いはほとんどわかりません。これだけでデフォルトのスループットを4倍にできることになるので、これはお得です!

最後に、ImageMagickの代わりにGraphicsmagickを使用することで、スループットを少し向上させることができます。適応性はそれほど高くありません(Photoshopファイルはサポートされていません)が、JPEG画像ではやや高速です。

graphicsmagickとimagemagickとの比較

結局、具体的な使用例や、どのような変換が必要かによって、実際は異なってきます。それぞれの変換に合わせて別のコマンドを使用できることに留意してください。これにより、最適化の範囲がさらに広がります。


タグ付き: Nuxeo Platform, Nuxeo Integration, Digital Asset Management, How to