Можно ли изменить размер BLOB-объекта. Увеличение размера изображения после размещения на холсте
Я создаю редактор изображений, который я использую для редактирования изображений перед загрузкой.
Поэтому для этого я использую кроппер JS.
но здесь возникает некоторая проблема, размер изображения увеличивается после редактирования изображения.
Итак, я хочу сохранить качество изображения после его редактирования как исходного изображения.
вот сом
private getImageFromBase64(file: File, base64, callback) {
let dataURI = base64;
let typeOfImage = file.type;
let nameOfImage = file.name;
// convert base64 to raw binary data held in a string
let byteString = atob(dataURI.split(',')[1]);
// separate out the mime component
let mimeString = dataURI
.split(',')[0]
.split(':')[1]
.split(';')[0];
// write the bytes of the string to an ArrayBuffer
let ab = new ArrayBuffer(byteString.length);
let ia = new Uint8Array(ab);
for (let i = 0; i < byteString.length; i++) {
ia[i] = byteString.charCodeAt(i);
}
// write the ArrayBuffer to a blob, and you're done
let bb: Blob = new Blob([ab], { type: typeOfImage });
let editedFile: any;
try {
editedFile = new File([bb], nameOfImage, { type: typeOfImage });
} catch (err) {
editedFile = bb;
editedFile.name = nameOfImage;
editedFile.lastModifiedDate = new Date();
}
return callback(editedFile);
}
private save(cb) {
let result = this.cropper.getCroppedCanvas({
width: this.width || 600,
height: this.height || 858
});
try {
result.toBlob((blob: any) => {
blob.name = this.file.name;
blob.lastModifiedDate = new Date();
cb(blob);
});
} catch (err) {
this.getImageFromBase64(this.file, result.toDataURL('jpeg', 0.8), cb);
}
}