Используйте Azure для создания эскизов, которые фокусируются на сущности фотографии. NodeJS-код.

Создание эскизов звучит просто. Уменьшите изображение до самой короткой стороны; затем обрежьте другую сторону, пока она не будет соответствовать целевому размеру. Проблема с этим упрощенным подходом заключается в том, что соответствующая часть изображения может быть вырезана (например, лица).

К счастью, у Azure Computer Vision API есть конечная точка для создания миниатюр с интеллектуальной обрезкой. Сервис идентифицирует суть изображения, т.е. лицо и обрезки вокруг него.

Вот как вы можете использовать API с NodeJS:

import * as fs from 'fs';
import * as request from 'request';
const azureSubscriptionKey = '<YOUR_SUBSCRIPTION_KEY>';
const uriBase = 'https://westeurope.api.cognitive.microsoft.com';
const params = {
  smartCropping: true,
  height: 300,
  width: 300,
};
const options = {
  headers: {
    'Content-Type': 'application/octet-stream',
    'Ocp-Apim-Subscription-Key' : azureSubscriptionKey,
  },
  qs: params,
  uri: `${baseUri}/vision/v2.0/generateThumbnail`,
};
const input = fs.createReadStream('image.jpg');
const output= fs.createWriteStream('preview.jpg');
input.pipe(request.post(options)).pipe(output);

Результат довольно впечатляющий:

Удачного кодирования!