Weboldal keresés

javascript - Feltöltött kép méretének ellenőrzése Angular 5 használatával


Jelenleg egy Angular webalkalmazáson dolgozom, és az egyik funkció a fényképfeltöltés.

Szeretném megvalósítani a kép méretének ellenőrzését, hogy hibát dobjak, ha a kép túl kicsi.

Itt van a kódom:

public onImageDrop(evt: any) {
  evt.stopPropagation();
  evt.preventDefault();
  this.croppieImage = null;
  this.onCropeMode = true;
  const image: HTMLImageElement = new Image();
  const file: File = evt.dataTransfer.files[0];
  const myReader: FileReader = new FileReader();

  myReader.onloadend = ((loadEvent: any) => {
    image.src = loadEvent.target.result;
    this.croppieImage = myReader.result;
  });

  myReader.readAsDataURL(file);
  **console.log(image.height);
  console.log(image.width);**
  this.photoInDragMode = false;
  this.uplodedPhotoFileName = file.name;
  this.uplodedPhotoFileMimeType = file.type;
  this.showPhotoSaveButton = true;
  this.onCropeMode = true;
}

A problémám az, hogy a

    console.log(image.height);
    console.log(image.width);

Mindig megmutatja nekem

> 0
> 0

Nagyon értékelném, ha valaki tudna segíteni.

Előre is köszönöm srácok.

Válasz #1

HTML

<input type='file'
       formControlName="img_name"
       class="form-control"
       (change)="readUrl($event)">

TS

readUrl(event: any) {
    if (event.target.files && event.target.files[0]) {

  if (event.target.files[0].type === 'image/jpeg' || 
      event.target.files[0].type === 'image/png' || 
      event.target.files[0].type ==='image/jpg') {
    if (event.target.files[0].size < 200 * 200) {/* Checking height * width*/ }
      if (event.target.files[0].size < 2000000) {/* checking size here - 2MB */ }
  }
}

Válasz #2

0-t kapsz, mert a kép még nem töltődött be, amikor elhelyezed a konzolnaplókat. Be van töltve

myReader.onloadend = ((loadEvent: any) => {
    image.src = loadEvent.target.result;
    this.croppieImage = myReader.result;
  });

így csinálhatsz valamit, például

myReader.onloadend = ((loadEvent: any) => {
    image.src = loadEvent.target.result;
    this.croppieImage = myReader.result;


  });

image.onload = function(){
  // image  has been loaded
console.log(image.height);
};

Kapcsolódó cikkek