diff --git a/packages/strapi-plugin-upload/admin/src/containers/SettingsPage/index.js b/packages/strapi-plugin-upload/admin/src/containers/SettingsPage/index.js index b538efc6b9..b36a3837c7 100644 --- a/packages/strapi-plugin-upload/admin/src/containers/SettingsPage/index.js +++ b/packages/strapi-plugin-upload/admin/src/containers/SettingsPage/index.js @@ -144,6 +144,19 @@ const SettingsPage = () => { /> +
+
+ +
+
{/* diff --git a/packages/strapi-plugin-upload/admin/src/containers/SettingsPage/reducer.js b/packages/strapi-plugin-upload/admin/src/containers/SettingsPage/reducer.js index 46a45ad264..2d4e03fb42 100644 --- a/packages/strapi-plugin-upload/admin/src/containers/SettingsPage/reducer.js +++ b/packages/strapi-plugin-upload/admin/src/containers/SettingsPage/reducer.js @@ -5,11 +5,13 @@ const initialState = fromJS({ initialData: { responsiveDimensions: true, sizeOptimization: true, + autoOrientation: false, videoPreview: false, }, modifiedData: { responsiveDimensions: true, sizeOptimization: true, + autoOrientation: false, videoPreview: false, }, }); diff --git a/packages/strapi-plugin-upload/admin/src/translations/en.json b/packages/strapi-plugin-upload/admin/src/translations/en.json index 462c5747e7..936c6b04b7 100644 --- a/packages/strapi-plugin-upload/admin/src/translations/en.json +++ b/packages/strapi-plugin-upload/admin/src/translations/en.json @@ -64,6 +64,7 @@ "settings.form.responsiveDimensions.label": "Enable responsive friendly upload", "settings.form.responsiveDimensions.description": "It automatically generates multiple formats (large, medium, small) of the uploaded asset", "settings.form.sizeOptimization.label": "Enable size optimization (without quality loss)", + "settings.form.autoOrientation.label": "Enable auto orientation", "settings.form.videoPreview.label": "Preview", "settings.form.videoPreview.description": "It will generate a six-second preview of the video (GIF)", "settings.section.video.label": "VIDEO", diff --git a/packages/strapi-plugin-upload/admin/src/translations/ru.json b/packages/strapi-plugin-upload/admin/src/translations/ru.json index 464bc25fed..9dedd20a83 100644 --- a/packages/strapi-plugin-upload/admin/src/translations/ru.json +++ b/packages/strapi-plugin-upload/admin/src/translations/ru.json @@ -8,6 +8,7 @@ "control-card.crop": "Кадрирование", "control-card.delete": "Удалить", "control-card.download": "Скачать", + "control-card.replace-media": "Заменить ресурс", "control-card.edit": "Редактировать", "control-card.save": "Сохранить", "form.input.label.file-alt": "Альтернативный текст", @@ -58,6 +59,7 @@ "settings.form.responsiveDimensions.label": "Включить адаптивную загрузку", "settings.form.responsiveDimensions.description": "Будут сгенерированы большое, среднее, маленькое изображение", "settings.form.sizeOptimization.label": "Включить оптимизацию размера (без потери качества)", + "settings.form.autoOrientation.label": "Включить автоопределение ориентации", "settings.form.videoPreview.label": "Превью", "settings.form.videoPreview.description": "Будет сгенерировано шестисекундное превью (GIF)", "settings.section.video.label": "ВИДЕО", @@ -71,4 +73,4 @@ "sort.updated_at_desc": "Сначала недавно обновлённые", "window.confirm.close-modal.files": "Вы уверены? Некоторые файлы ещё не загружены.", "window.confirm.close-modal.file": "Вы уверены? Изменения будут потеряны." -} \ No newline at end of file +} diff --git a/packages/strapi-plugin-upload/services/image-manipulation.js b/packages/strapi-plugin-upload/services/image-manipulation.js index 67dcfb9088..388ddaeaa9 100644 --- a/packages/strapi-plugin-upload/services/image-manipulation.js +++ b/packages/strapi-plugin-upload/services/image-manipulation.js @@ -59,15 +59,17 @@ const generateThumbnail = async file => { }; const optimize = async buffer => { - const { sizeOptimization = false } = await strapi.plugins.upload.services.upload.getSettings(); + const { + sizeOptimization = false, + autoOrientation = false, + } = await strapi.plugins.upload.services.upload.getSettings(); - if (!sizeOptimization) return { buffer }; - - if (!(await canBeProccessed(buffer))) { + if (!sizeOptimization || !(await canBeProccessed(buffer))) { return { buffer }; } - return sharp(buffer) + const sharpInstance = autoOrientation ? sharp(buffer).rotate() : sharp(buffer); + return sharpInstance .toBuffer({ resolveWithObject: true }) .then(({ data, info }) => ({ buffer: data,