JAI メディア API と ImageMagick の両方を使用していますか?
ImageMagick にはスケーラビリティの問題があり、JNI ベースの JMagick も魅力的ではありません。ImageMagick と比較して、サイズ変更操作を行うと、JAI は質の悪い結果をもたらします。
ネイティブJavaで高品質の結果をもたらす、オープンソースまたは商用の優れたツールを知っている人はいますか?
JAI メディア API と ImageMagick の両方を使用していますか?
ImageMagick にはスケーラビリティの問題があり、JNI ベースの JMagick も魅力的ではありません。ImageMagick と比較して、サイズ変更操作を行うと、JAI は質の悪い結果をもたらします。
ネイティブJavaで高品質の結果をもたらす、オープンソースまたは商用の優れたツールを知っている人はいますか?
私はこの質問がかなり古いことを知っていますが、新しいソフトウェアが出てくると、人々にとって興味深いかもしれないプロジェクトへのいくつかの新しいリンクを取得するのに役立ちます。
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実装よりも見栄えのするスケーリングされた結果を提供します。
であると自慢するImageJがあります。
世界最速のピュア Java 画像処理プログラム
別のアプリケーションでライブラリとして使用できます。そのアーキテクチャは素晴らしいものではありませんが、基本的な画像処理タスクを実行します。
別の良い代替案:マーヴィン
私は Java の専門家ではありませんが、OpenCV は私のニーズに最適です。それがあなたに合っているかどうかはわかりません。ここに Java ポートがあると思います: http://docs.opencv.org/2.4/doc/tutorials/introduction/desktop_java/java_dev_intro.html
処理は新しいですが、とてもとても良いです。
Catalano Frameworkを使用してみてください。
キーポイント:
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
imo最善の方法は、GraphicsMagick Image Processing Systemをim4javaと共にJava のコマンドライン インターフェイスとして使用することです。
GraphicsMagick には多くの利点がありますが、すべてに 1 つ:
http://im4java.sourceforge.net/ - Linux forking を実行している場合、新しいプロセスは高価ではありません。
商用ツールの場合は、Snowbound を試すことをお勧めします。
彼らとの私の経験はやや古くなっていますが、彼らの Java Imaging API は JAI よりもはるかに使いやすく、はるかに高速であることがわかりました。
彼らのカスタマー サポートとコード サンプルも非常に優れていました。
これが「最高の」ライブラリであるとは言えませんが、これを試すことができると思います: http://algart.net/java/AlgART/ これはオープンソースの Java ライブラリであり、一般化された「スマート」な配列と行列をサポートしています。 2D、3D、多次元の画像処理やその他のアルゴリズムを含む、さまざまなタイプ (1 ビットから 64 ビットの浮動小数点) の要素で、配列と行列を操作します。残念ながら、現時点では十分なデモとサンプルで構成されていませんが、一方で、多くの JavaDoc が含まれています。数年間、商用ソフトウェア (SIMAGIS) のベースにありましたが、現在はオープンソースです。