Получить ширину и высоту изображения с помощью ng2-file-upload
Я хочу получить и проверить ширину и высоту загруженного изображения, используя 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"
во входном элементе, но я не могу найти, где я могу "поймать" ошибку, если размер входного изображения неправильный.
2 ответа
Решение
Преобразуйте ваш файл в 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()">
Наконец я получил эту работу с некоторыми изменениями в должности Трише
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()">