Return 要从 ngx-image-cropper 上传的文件 - Angular
Return File from ngx-image-cropper to upload - Angular
我正在使用 ngx-image-cropper to crop my image. I need to retrieve the cropped image from ngx-image-cropper 上传。但是,我无法通过此检索文件对象。
这是我用来在用户裁剪图像时触发的代码,
imageCropped(event: ImageCroppedEvent) {
this.croppedImage = event.base64;
this.cropperHeight = event.height;
this.cropperWidth = event.width;
this.croppedEvent =event.file;//This is how i tried to get file
}
当我尝试上传文件时出现一些错误。所以最好提供一种从 ngx-image-cropper
获取文件对象的方法
要return将裁剪后的图像作为文件而不是 base64 字符串,添加以下内容:
import { ImageCroppedEvent, base64ToFile } from 'ngx-image-cropper';
imageCropped(event: ImageCroppedEvent) {
// Preview
this.croppedImage = event.base64;
const fileToReturn = this.base64ToFile(
event.base64,
this.data.imageChangedEvent.target.files[0].name,
)
return fileToReturn;
}
base64ToFile(data, filename) {
const arr = data.split(',');
const mime = arr[0].match(/:(.*?);/)[1];
const bstr = atob(arr[1]);
let n = bstr.length;
let u8arr = new Uint8Array(n);
while(n--){
u8arr[n] = bstr.charCodeAt(n);
}
return new File([u8arr], filename, { type: mime });
}
包中包含方法base64ToFile
// Import the method:
import { ImageCroppedEvent, base64ToFile } from 'ngx-image-cropper';
.....
imageCropped(event: ImageCroppedEvent) {
this.croppedImage = event.base64;
let File = base64ToFile(this.croppedImage);
}
来源:https://github.com/Mawi137/ngx-image-cropper/releases/tag/3.0.0
我解决了将原始文件发送到函数并在 image-cropper 上创建一个新文件实例的问题 crop( originalFile: File )功能:
import { ImageCroppedEvent, base64ToFile } from 'ngx-image-cropper';
...
crop(originalFile): File {
...
...
output.base64 = this.cropToBase64(cropCanvas);
if(originalFile){
const file = new File([base64ToFile(output.base64)], originalFile.name, {lastModified: originalFile.lastModified, type: originalFile.type});
return file;
}
}
我正在使用 ngx-image-cropper to crop my image. I need to retrieve the cropped image from ngx-image-cropper 上传。但是,我无法通过此检索文件对象。
这是我用来在用户裁剪图像时触发的代码,
imageCropped(event: ImageCroppedEvent) {
this.croppedImage = event.base64;
this.cropperHeight = event.height;
this.cropperWidth = event.width;
this.croppedEvent =event.file;//This is how i tried to get file
}
当我尝试上传文件时出现一些错误。所以最好提供一种从 ngx-image-cropper
获取文件对象的方法要return将裁剪后的图像作为文件而不是 base64 字符串,添加以下内容:
import { ImageCroppedEvent, base64ToFile } from 'ngx-image-cropper';
imageCropped(event: ImageCroppedEvent) {
// Preview
this.croppedImage = event.base64;
const fileToReturn = this.base64ToFile(
event.base64,
this.data.imageChangedEvent.target.files[0].name,
)
return fileToReturn;
}
base64ToFile(data, filename) {
const arr = data.split(',');
const mime = arr[0].match(/:(.*?);/)[1];
const bstr = atob(arr[1]);
let n = bstr.length;
let u8arr = new Uint8Array(n);
while(n--){
u8arr[n] = bstr.charCodeAt(n);
}
return new File([u8arr], filename, { type: mime });
}
包中包含方法base64ToFile
// Import the method:
import { ImageCroppedEvent, base64ToFile } from 'ngx-image-cropper';
.....
imageCropped(event: ImageCroppedEvent) {
this.croppedImage = event.base64;
let File = base64ToFile(this.croppedImage);
}
来源:https://github.com/Mawi137/ngx-image-cropper/releases/tag/3.0.0
我解决了将原始文件发送到函数并在 image-cropper 上创建一个新文件实例的问题 crop( originalFile: File )功能:
import { ImageCroppedEvent, base64ToFile } from 'ngx-image-cropper';
...
crop(originalFile): File {
...
...
output.base64 = this.cropToBase64(cropCanvas);
if(originalFile){
const file = new File([base64ToFile(output.base64)], originalFile.name, {lastModified: originalFile.lastModified, type: originalFile.type});
return file;
}
}