0

我想使用 ng2-file-upload 和 Angular 6 获取并检查上传图像的宽度和高度。

到目前为止,我的代码是:

constructor() {
    this.uploader = this.initializeUploader("url");
}

public uploader;


private initializeUploader(url: string): FileUploader {
    const uploadOptions: FileUploaderOptions = {
        allowedMimeType: ['image/jpeg', 'image/png' ],

    }
    const uploader = new FileUploader(uploadOptions);

    uploader.onAfterAddingFile = item => {
        console.log(item);
        //Want to get width here
    }

    return uploader;
}

和 HTML:

<input type="file" ng2FileSelect [uploader]="uploader" />

我一直在寻找解决方案,但对我没有任何帮助。找到了使用的想法

Upload.imageDimensions(file).then()

在这里。但我不明白如何/在哪里导入“上传”。还找到了添加的解决方案

ngf-min-height="1"

在输入元素中,但如果输入图像的大小错误,我找不到可以“捕获”错误的位置。

4

2 回答 2

1

将您的文件转换为 base64,并以该基础作为源创建图像。在load挂钩期间,您可以获得图像的大小。这是一个工作片段!

function change() {
  const input = document.querySelector('input');
  const file = input.files[0];
  
  getBase64(file).then(base64 => {
    const img = new Image();
    img.onload = () => console.log(img.width, img.height);
    img.src = base64;
  });
}

function getBase64(file) {
  return new Promise((resolve, reject) => {
    const reader = new FileReader();
    reader.readAsDataURL(file);
    reader.onload = () => resolve(reader.result);
    reader.onerror = error => reject(error);
  });
}
<input type="file" onchange="change()">

于 2018-12-07T09:26:50.557 回答
0

最后我得到了这个工作与trichetriche职位的一些变化:

    public change() {
    const input = document.querySelector('input');
    const file = input.files[0];

    this.getBase64(file).then(base64 => {
      const img = new Image();
      img.onload = () => console.log(img.width, img.height);
      img.src = base64.toString();
    });
  }

  public getBase64(file) {
    return new Promise((resolve, reject) => {
      const reader = new FileReader();
      reader.readAsDataURL(file);
      reader.onload = () => resolve(reader.result);
      reader.onerror = error => reject(error);
    });
  }

和html:

 <input type="file" (change)="change()">
于 2018-12-07T10:22:23.047 回答