3

画像のトリミング/サイズ変更を行う Java ライブラリを探しています。jmagick を使用する予定でしたが、2009 年からメンテナンスされていないようです。

これは使用するのに最適なライブラリですか? 何かお勧めはありますか?!

編集

私がやりたいことの 1 つは、画像をパディングしてサイズを変更したり、トリミングしたりできるようにすることです。つまり、4x2 の画像を正方形にしたい場合は、4x4 にし、各辺に黒または白のパディングを付けます。これは画像操作に名前がありますか? ライブラリに付属する機能ですか?

4

2 に答える 2

20

私は、Java 用のサムネイル生成ライブラリであるThumbnailatorを維持しています。これは、使いやすい流暢な APIを介して、画像のサイズを変更し、いくつかの簡単な画像操作を行う手段を提供します。

Thumbnailator が提供する機能の 1 つは、Canvas結果のサムネイルのトリミングとパディング (またはレターボックス化) を実行できるフィルターです。

画像のパディング

たとえば、Canvasフィルターを使用して画像をパディングするには、次のようにします。

Thumbnails.of("path/to/image.jpg")
  .size(150, 150)
  .addFilter(new Canvas(150, 150, Positions.CENTER, Color.blue))
  .toFile("path/to/padded-image.jpg");

上記は次のようになります。

  1. size元の画像を取得し、メソッドを使用して 150 x 150 以内に収まるように縮小します。
  2. 次に、addFilterメソッドで指定された追加のフィルタリング手順により、( を使用して) 青のパディングが追加されColor.blue、サイズが 150 x 150 の最終画像が生成されます。
  3. 結果のサムネイルを に保存しますpath/to/padded-image.jpg

上記のコードをポートレート写真で使用すると、次のようになります。

パディング画像
(出典: coobird.net )

画像のトリミング

フィルターを使用した画像のトリミングはCanvas、次の方法で実現できます。

Thumbnails.of("path/to/image.jpg")
  .size(150, 150)
  .addFilter(new Canvas(100, 100, Positions.TOP_RIGHT, true))
  .toFile("path/to/cropped-image.jpg");

上記のコードは次のようになります。

  1. size元の画像を取得し、メソッドを使用して 150 x 150 以内に収まるように縮小します。
  2. 次に、追加のフィルタリング手順により、サイズ変更された画像の右上隅から 100 x 100 の領域が切り取られます。(コンストラクター呼び出しtrueに存在する引数はCanvas、指定されたサイズよりも大きい場合に画像をトリミングする必要があることを示します。)
  3. 結果のサムネイルを に保存しますpath/to/cropped-image.jpg

上記のコードを実行する例は次のとおりです。

トリミングされた画像
(出典: coobird.net )


現在、トリミングを Thumbnailator API のより不可欠な部分にする機能のリクエストがあるため、将来的には、ほとんどの状況でメソッドcropを呼び出す必要性を減らすメソッドを追加する予定です。addFilter

于 2011-11-16T14:41:31.963 に答える
0

これを試すことができます:

BufferedImage image=ImageIO.read(new FileInputStream("<youFile.jpg>"));
int min=0;
if(image.getWidth()>image.getHeight())
    min=image.getHeight();
else
    min=image.getWidth();

Thumbnails.of(image)
    .sourceRegion(Positions.CENTER, min, min)
    .size(250, 250)
  .toFile("<outputFile.jpg>");
于 2016-02-25T03:57:24.817 に答える