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);
};
