В моем приложении Angular 6 я делаю опцию загрузки файла, и в предварительном просмотре загруженный файл должен отображаться с автоматическим обрезанием и автоматическим изменением размера.
Я пробовал следующее,
HTML:
<canvas id="canvas"></canvas>
<div style="display:none;">
<img id="source" [src]="url" width="300" height="227">
</div>
<input type='file' (change)="onSelectFile($event)">
Функция выбора файла:
onSelectFile(event) {
if (event.target.files && event.target.files[0]) {
var reader = new FileReader();
reader.readAsDataURL(event.target.files[0]); // read file as data url
reader.onload = (event) => { // called once readAsDataURL is completed
this.url = event.target.result;
}
const canvas : any = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
const image = document.getElementById('source');
ctx.drawImage(image, 33, 71, 104, 124, 21, 20, 87, 104);
}
}
Выше я пробовал следующее со ссылкой https://jsfiddle.net/8jwq3cs7/
const canvas : any = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
const image = document.getElementById('source');
ctx.drawImage(image, 33, 71, 104, 124, 21, 20, 87, 104);
Перед использованием холста исходное изображение выглядит следующим образом: https://mdn.mozillademos.org/files/5397/rhino.jpg
Тогда как после использования холста это выглядит так: https://jsfiddle.net/8jwq3cs7/
Но еслиЯ выбираю изображение из choose file
, тогда я не могу увидеть изображение после выбора ...
Рабочий пример: https://stackblitz.com/edit/angular-file-upload-preview-uwpf8f
Даже решение с использованием только чистого JavaScript также было бы замечательно, если бы не Angular ...
Требование: , если я выбираю файл, то тот же файл должен быть обрезани подгонять размер автоматически в предпросмотре ...
Пожалуйста, помогите мне достичь результата без jQuery или какой-либо библиотеки ...