Используйте 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);
Результат довольно впечатляющий:
Удачного кодирования!