Ответ 1
Для этого вы должны быть знакомы с API Canvas HTML5 и API файлов. И, конечно же, эта функция доступна в браузерах, поддерживающих только API HTML5.
Процесс для этого:
- Отправка элемента ввода
change
для ввода файла. - Получить загруженный файл из обработчика событий и получить URL-адрес данных с помощью FileReader объект.
- Создайте элемент
img
с URL-адресом данных и нарисуйте его на холсте.
Я сделал простой пример на jsfiddle. Код выглядит следующим образом:
<canvas id="canvas"></canvas>
<input type="file" id="file-input">
<script>
$(function() {
$('#file-input').change(function(e) {
var file = e.target.files[0],
imageType = /image.*/;
if (!file.type.match(imageType))
return;
var reader = new FileReader();
reader.onload = fileOnload;
reader.readAsDataURL(file);
});
function fileOnload(e) {
var $img = $('<img>', { src: e.target.result });
$img.load(function() {
var canvas = $('#canvas')[0];
var context = canvas.getContext('2d');
canvas.width = this.naturalWidth;
canvas.height = this.naturalHeight;
context.drawImage(this, 0, 0);
});
}
});
</script>
Есть много хороших руководств по файловому API, например this или это.