13

Java (Spring、Hibernate/JPA、Struts2) で記述された Web アプリケーションがあり、ユーザーは画像をアップロードしてファイル システムに保存できます。これらの画像を拡大縮小して、サイトに表示するための一貫したサイズにしたいと考えています。どのライブラリまたは組み込み関数が最良の結果を提供しますか? 決定を下す際には、次の基準を考慮します (この順序で)。

  • フリー/オープンソース (必須)
  • 実装が簡単
  • 結果の質
  • パフォーマンス
  • 実行可能ファイルのサイズ
4

7 に答える 7

10

imgscar を試してみることを強くお勧めします。

Apache 2 ライセンスの下でリリースされ、GitHubでホストされており、すでにいくつかの Web アプリケーションにデプロイされており、非常にシンプルですが、詳細に文書化された API を備えています。スケーリング操作の後に突然「黒い」画像が表示され始めた場合、または見栄えの悪い結果が得られた場合にのみ気付くでしょう。 .

基本的な使用方法は次のようになります。

BufferedImage img = ImageIO.read(...); // load image
BufferedImage scaledImg = Scalr.resize(img, 320);

これは、ライブラリが品質について最善の推測を行い、画像の縦横比を尊重し、結果を 320x320 境界ボックス内に収める最も単純な呼び出しです。注: バウンディング ボックスは、使用される最大の W/H です。画像の縦横比が尊重されるため、結果の画像はそれを尊重します (たとえば 320x200)。

自動モードをオーバーライドして、最も見栄えの良い結果を強制的に提供し、非常に穏やかなアンチエイリアス フィルターを結果に適用して、さらに見栄えを良くしたい場合 (特にサムネイルに適しています)、その呼び出しは次のようになります。

BufferedImage img = ImageIO.read(...); // load image
BufferedImage scaledImg = Scalr.resize(img, Method.QUALITY, 
                                       150, 100, Scalr.OP_ANTIALIAS);

これらはすべて単なる例です。API は幅広く、非常に単純なユース ケースから非常に専門的なユース ケースまですべてをカバーしています。イメージに適用する独自の BufferedImageOps を渡すこともできます (ライブラリは 6 年間の BufferedImageOp JDK バグを自動的に修正します!)

Java で画像を適切にスケーリングするには、ライブラリが行うよりもはるかに多くのことが行われます。たとえば、画像を操作している間、常にサポートされている RGB または ARGB 画像タイプのいずれかで画像を維持します。画像操作に使用される画像タイプが十分にサポートされていない場合、Java2D 画像処理パイプラインは内部で下位のソフトウェア パイプラインにフォールバックします。

頭の痛い問題のように聞こえるかもしれませんが、それは... そのため、私はライブラリを作成してオープンソース化したので、人々は画像のサイズを変更するだけで、心配する必要なく生活を続けることができました。

それが役立つことを願っています。

于 2011-07-05T16:41:22.147 に答える
4

画像の読み取り/書き込みを行うには、Java Image I /OAPIをご覧ください。次に、AffineTransformを使用してサイズを変更します。

また、java.awt.Imageを使用した完全な例を次に示します

于 2009-05-03T08:30:40.803 に答える
4

java-image-scalingライブラリも調べてください。ImageIO よりも高品質の画像を作成しました。

于 2010-05-08T09:31:05.150 に答える
1

画像編集に最適なツールはImageMagickで、オープン ソースです。

Java 言語には 2 つのインターフェースがあります。

ImageMagick への JNI インターフェイスを使用するJMagick

im4java ImageMagick のコマンド ライン インターフェイスとは

于 2011-04-11T14:18:41.880 に答える