Используя Thumbnailator, могу ли я сделать эскиз с одинаковой высотой и шириной независимо от размера изображения - PullRequest
4 голосов
/ 06 марта 2012

В Thumbnailator , я делаю миниатюры.

Если размер изображения 400 * 300 и если я делаю следующее,

Thumbnails.of(new File("original.jpg"))
        .size(160, 160)
        .toFile(new File("thumbnail.jpg"));

это создает миниатюру160 * 120.

То, что я хочу, это если я загружу изображение 400 * 300, оно будет масштабировать по центру, чтобы я стал 300 * 300, а затем уменьшенное изображение.

Я прошел черездокументация, даже я написал то же самое в комментарии, но не повезло.

1 Ответ

10 голосов
/ 14 марта 2012

Похоже на задание для метода sourceRegion, который можно использовать для указания области, из которой должен создаваться эскиз:

Иллюстрация создания эскиза с использованиемsourceRegion метод в Thumbnailator http://wiki.thumbnailator.googlecode.com/hg/img/features/sourceregion.png

В вашем конкретном случае вы захотите попробовать следующее:

Thumbnails.of(new File("original.jpg"))
  .sourceRegion(Positions.CENTER, 300, 300)
  .size(160, 160)
  .toFile(new File("thumbnail.jpg"));

Приведенный выше код будет:

  1. Откройте original.jpg,
  2. Используйте центральную область 300 x 300 исходного изображения и
  3. Измените размер этой области до миниатюры 160 x 160, и
  4. Записывает вthumbnail.jpg.

Можно выбрать различные области исходного изображения, изменив Positions.CENTER, например, Positions.TOP_LEFT.Полный список предопределенных вариантов можно найти в документации по перечислению Positions.


Ниже приведены некоторые ссылки на документацию API Thumbnailator, которые могут бытьинтерес:

  • sourceRegion(int, int, int, int) метод
    • Используется для указания точной области, из которой создается миниатюра.
  • sourceRegion(Position, int, int) метод
    • Использует относительное позиционирование с использованием объекта Position, как показано в примере кода выше.
  • sourceRegion(Rectangle) method
    • Используется для указания точной области, из которой создается миниатюра, с использованием объекта java.awt.Rectangle.
  • Position enum
    • Предоставляет предварительно определенные позиции, которые можно использовать для указания относительной позиции области, из которой создается миниатюра.

Отказ от ответственности: я поддерживаю библиотеку Thumbnailator .

...