У меня есть компонент, в который я загружаю изображения, и у меня также есть возможность обрезки, я использую ngx-image-cropper для этого, он берет изображение, конвертирует в base64 и затем загружает в nodejs API, где я просто сохраняю файл. Проблема в том, что для изображений размером более 2 МБ это не работает, я должен разрешить это для больших изображений.
app.use(bodyParser.json({limit: '40mb', extended: true}))
app.use(bodyParser.urlencoded({limit: '40mb', extended: true}))
Здесь в моем angular коде для изображения
<image-cropper
[ngClass]="croppedImage == '' ? 'hide' : 'show'"
[imageChangedEvent]="imageChangedEvent"
[maintainAspectRatio]="true"
[aspectRatio]="12 / 4"
format="png"
(imageCropped)="imageCropped($event)"
(imageLoaded)="imageLoaded()"
(cropperReady)="cropperReady()"
(loadImageFailed)="loadImageFailed()"
></image-cropper>
ageCropped(event: ImageCroppedEvent) {
this.croppedImage = event.base64;
// console.log('image cropped')
}
uploadImage(){
this.loading = true;
let b64 = this.croppedImage;
this.imageService.uploadImageB64(b64)
});
Я указал ограничение размера 40 МБ, у меня 2 проблемы,
- Большие изображения не разрешены этим модулем ngx-image-cropper
- Размер изображения увеличивается при преобразовании в base64, так как я загружаю большие изображения, мне нужен процесс сжатия изображений, например, если загруженное изображение размером 3 МБ должно стать меньше, чем i МБ, без существенного ухудшения качества.