从 ngx-image-cropper 返回文件以上传 - Angular

nip*_*hka 4 blob image file node-modules angular

我正在使用ngx-image-cropper来裁剪我的图像。我需要从ngx-image-cropper 中检索裁剪后的图像才能上传。但是,我无法通过此检索 File 对象。

这是我用来在用户裁剪图像时触发的代码,

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
}
Run Code Online (Sandbox Code Playgroud)

当我尝试上传文件时,它有一些错误。所以最好提供一种从 ngx-image-cropper 获取文件对象的方法

men*_*ndo 16

该包包括方法 base64ToFile

// Import the method:

import { ImageCroppedEvent, base64ToFile } from 'ngx-image-cropper';

.....
imageCropped(event: ImageCroppedEvent) {
    this.croppedImage = event.base64;
    let File = base64ToFile(this.croppedImage);
}

Run Code Online (Sandbox Code Playgroud)

来源:https : //github.com/Mawi137/ngx-image-cropper/releases/tag/3.0.0


小智 7

要将裁剪后的图像作为文件而不是 base64 字符串返回,请添加以下内容:

  imageCropped(event: ImageCroppedEvent) {
    // Preview
    this.croppedImage = event.base64;

    this.fileToReturn = this.base64ToFile(
      event.base64,
      this.data.imageChangedEvent.target.files[0].name,
    )

    console.log(this.data.imageChangedEvent.target.files[0]);
    console.log(this.fileToReturn);
    return this.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 });
  }

Run Code Online (Sandbox Code Playgroud)