261

JAI メディア API と ImageMagick の両方を使用していますか?

ImageMagick にはスケーラビリティの問題があり、JNI ベースの JMagick も魅力的ではありません。ImageMagick と比較して、サイズ変更操作を行うと、JAI は質の悪い結果をもたらします。

ネイティブJavaで高品質の結果をもたらす、オープンソースまたは商用の優れたツールを知っている人はいますか?

4

11 に答える 11

137

私はこの質問がかなり古いことを知っていますが、新しいソフトウェアが出てくると、人々にとって興味深いかもしれないプロジェクトへのいくつかの新しいリンクを取得するのに役立ちます。

imgscalrは純粋なJava画像のサイズ変更(およびパディング、トリミング、回転、明るく/調光などの単純な操作)ライブラリであり、非常に簡単に使用できます。単一のクラスは、すべて静的メソッドとして定義された一連の単純なグラフィック操作で構成されます。画像を渡して結果を返します。

ライブラリを使用する最も基本的な例は次のようになります。

BufferedImage thumbnail = Scalr.resize(image, 150);

また、いくつかの品質調整などを使用して画像サムネイルを生成するためのより一般的な使用法は、次のようになります。

import static org.imgscalr.Scalr.*;

public static BufferedImage createThumbnail(BufferedImage img) {
    // Create quickly, then smooth and brighten it.
    img = resize(img, Method.SPEED, 125, OP_ANTIALIAS, OP_BRIGHTER);

    // Let's add a little border before we return result.
    return pad(img, 4);
}

すべての画像処理操作は、生のJava2Dパイプライン(主要なプラットフォームでハードウェアアクセラレーションされています)を使用し、コード内のライブラリ競合のようにJNIを介して呼び出すという苦痛をもたらしません。

imgscalrは、かなりの数の場所で大規模なプロダクションにも展開されています。AsyncScalrクラスが含まれているため、サーバー側の画像処理に最適です。

最高のULTRA_QUALITYモードで速度と品質をトレードオフするために使用できる画質には多くの調整があり、GIMPのLancoz3実装よりも見栄えのするスケーリングされた結果を提供します。

于 2012-02-23T18:18:16.960 に答える
94

であると自慢するImageJがあります。

世界最速のピュア Java 画像処理プログラム

別のアプリケーションでライブラリとして使用できます。そのアーキテクチャは素晴らしいものではありませんが、基本的な画像処理タスクを実行します。

于 2009-03-05T23:58:09.260 に答える
33

別の良い代替案:マーヴィン

于 2010-02-28T04:55:58.760 に答える
10

私は Java の専門家ではありませんが、OpenCV は私のニーズに最適です。それがあなたに合っているかどうかはわかりません。ここに Java ポートがあると思います: http://docs.opencv.org/2.4/doc/tutorials/introduction/desktop_java/java_dev_intro.html

于 2009-03-06T10:14:54.707 に答える
9

処理は新しいですが、とてもとても良いです。

于 2009-03-02T18:02:11.417 に答える
5

Catalano Frameworkを使用してみてください。

キーポイント:

  • AForge.NET/Accord.NET のようなアーキテクチャ。
  • デスクトップと Android の両方の環境で、同じコードを使用して実行します。
  • 複数のフィルターが並行して含まれています。
  • 開発は全速力で進んでいます。

Catalano フレームワークは、Java および Android 用の科学計算用フレームワークです。このプロジェクトは、.NET 用の AForge.NET および Accord.NET フレームワークの多くの機能の最初のポートとして開始されましたが、現在これらのプロジェクト間で共有されているより高度な機能で着実に成長しています。

例:

FastBitmap fb = new FastBitmap(bitmap);

Grayscale g = new Grayscale();
g.applyInPlace(fb);

Threshold t = new Threshold(120);
t.applyInPlace(fb);

bitmap = fb.toBitmap();

//Show the result
于 2013-07-09T20:45:50.390 に答える
4

imo最善の方法は、GraphicsMagick Image Processing Systemim4javaと共にJava のコマンドライン インターフェイスとして使用することです。

GraphicsMagick には多くの利点がありますが、すべてに 1 つ:

  • GM は、世界最大の写真サイト (Flickr や Etsy など) で何十億ものファイルを処理するために使用されています。
于 2011-04-11T17:07:41.210 に答える
3

http://im4java.sourceforge.net/ - Linux forking を実行している場合、新しいプロセスは高価ではありません。

于 2010-08-13T14:40:33.150 に答える
2

商用ツールの場合は、Snowbound を試すことをお勧めします。

http://www.snowbound.com/

彼らとの私の経験はやや古くなっていますが、彼らの Java Imaging API は JAI よりもはるかに使いやすく、はるかに高速であることがわかりました。

彼らのカスタマー サポートとコード サンプルも非常に優れていました。

于 2009-03-02T18:04:21.350 に答える
1

これが「最高の」ライブラリであるとは言えませんが、これを試すことができると思います: http://algart.net/java/AlgART/ これはオープンソースの Java ライブラリであり、一般化された「スマート」な配列と行列をサポートしています。 2D、3D、多次元の画像処理やその他のアルゴリズムを含む、さまざまなタイプ (1 ビットから 64 ビットの浮動小数点) の要素で、配列と行列を操作します。残念ながら、現時点では十分なデモとサンプルで構成されていませんが、一方で、多くの JavaDoc が含まれています。数年間、商用ソフトウェア (SIMAGIS) のベースにありましたが、現在はオープンソースです。

于 2013-12-26T13:36:27.760 に答える