diff --git a/backend/static/js/components/avatarCropperHandler.js b/backend/static/js/components/avatarCropperHandler.js index c6f6838f..41bce431 100644 --- a/backend/static/js/components/avatarCropperHandler.js +++ b/backend/static/js/components/avatarCropperHandler.js @@ -21,7 +21,7 @@ const DEFAULT_CONFIG = { // Настройки Cropper.js cropperOptions: { - aspectRatio: 1, // Квадратное фото + aspectRatio: 3 / 4, // Портретное фото 3:4 viewMode: 2, // Ограничить canvas областью контейнера dragMode: 'move', // Перемещение изображения autoCropArea: 0.8, // Начальный размер области обрезки (80%) @@ -33,12 +33,13 @@ const DEFAULT_CONFIG = { cropBoxResizable: true, toggleDragModeOnDblclick: false, minCropBoxWidth: 200, - minCropBoxHeight: 200, + minCropBoxHeight: 266, // 200 * 4/3 для сохранения пропорций }, // Требования для FaceID - minOutputSize: 600, // Минимальный размер выходного изображения - outputSize: 800, // Рекомендуемый размер выходного изображения + minOutputSize: 600, // Минимальный размер выходного изображения (по меньшей стороне) + outputWidth: 600, // Ширина выходного изображения (3:4) + outputHeight: 800, // Высота выходного изображения (3:4) outputQuality: 0.92, // Качество JPEG (0.0 - 1.0) outputFormat: 'image/jpeg', // Формат выходного файла @@ -49,12 +50,13 @@ const DEFAULT_CONFIG = {
Требования для системы распознавания лиц:
`, @@ -111,36 +113,41 @@ export class AvatarCropper {
- - +
@@ -321,6 +328,15 @@ export class AvatarCropper { this.updateSizeIndicator(event.detail); this.updateOverlayPosition(); }, + cropstart: () => { + this.updateOverlayPosition(); + }, + cropmove: () => { + this.updateOverlayPosition(); + }, + cropend: () => { + this.updateOverlayPosition(); + }, zoom: () => { this.updateOverlayPosition(); } @@ -409,10 +425,10 @@ export class AvatarCropper { applyBtn.disabled = true; applyBtn.innerHTML = 'Обработка...'; - // Получаем обрезанное изображение + // Получаем обрезанное изображение в пропорциях 3:4 const canvas = this.cropper.getCroppedCanvas({ - width: this.config.outputSize, - height: this.config.outputSize, + width: this.config.outputWidth, + height: this.config.outputHeight, imageSmoothingEnabled: true, imageSmoothingQuality: 'high', }); diff --git a/backend/templates/auth/register.html b/backend/templates/auth/register.html index 42294bdf..7a8e4a82 100644 --- a/backend/templates/auth/register.html +++ b/backend/templates/auth/register.html @@ -118,8 +118,9 @@ Требования для системы распознавания лиц (FaceID):
- • Лицо должно занимать 70-80% кадра
- • Минимальный размер: 600x600px
+ • Портретное фото (пропорции 3:4)
+ • Совместите тело с контуром (голова, плечи, торс)
+ • Минимальный размер: 600x800px
• Форматы: JPG, PNG, GIF. Максимум 10 МБ
diff --git a/backend/templates/employees/components/employee_form_personal.html b/backend/templates/employees/components/employee_form_personal.html index 67a4816a..c20e5a40 100644 --- a/backend/templates/employees/components/employee_form_personal.html +++ b/backend/templates/employees/components/employee_form_personal.html @@ -39,8 +39,9 @@ Требования для системы распознавания лиц (FaceID):
- • Лицо должно занимать 70-80% кадра
- • Минимальный размер: 600x600px
+ • Портретное фото (пропорции 3:4)
+ • Совместите тело с контуром (голова, плечи, торс)
+ • Минимальный размер: 600x800px
• Форматы: JPG, PNG, GIF. Максимум 10 МБ
{% if emp.avatar %}