前端JS 展示上传图片缩略图(本地图片读取)
发布人:shili8
发布时间:2025-03-12 07:17
阅读次数:0
**前端JS 展示上传图片缩略图**
在现代网页应用中,用户上传图片是非常常见的功能。然而,直接上传原始图片可能会导致页面加载速度变慢、占用大量服务器资源等问题。因此,我们需要对上传的图片进行处理,生成一个合适大小的缩略图,以便快速展示给用户。
在本文中,我们将使用JavaScript和HTML5 Canvas API来实现图片缩略图的展示功能。
###1. HTML结构首先,我们需要定义一个HTML结构来容纳我们的图片上传控件和缩略图展示区域。
html<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>图片上传与缩略图展示</title>
<style>
#image-container {
width:300px;
height:200px;
border:1px solid #ccc;
padding:10px;
}
#thumbnail-container {
width:100px;
height:100px;
border:1px solid #ccc;
padding:5px;
}
</style>
</head>
<body>
<h1>图片上传与缩略图展示</h1>
<!--上传控件 -->
<input type="file" id="image-input" accept=".jpg, .jpeg, .png">
<!-- 缩略图展示区域 -->
<div id="thumbnail-container"></div>
<script src="script.js"></script>
</body>
</html>
###2. JavaScript逻辑接下来,我们需要编写JavaScript逻辑来处理图片上传、生成缩略图并展示在页面上。
javascript// script.jsconst imageInput = document.getElementById('image-input');
const thumbnailContainer = document.getElementById('thumbnail-container');
// 监听文件输入控件的变化imageInput.addEventListener('change', (e) => {
const file = e.target.files[0];
// 检查是否是图片类型 if (!file.type.match(/(jpg|jpeg|png)$/)) {
alert('请上传jpg、jpeg或png格式的图片!');
return;
}
//读取本地图片 const reader = new FileReader();
reader.onload = (event) => {
const imageDataUrl = event.target.result;
//生成缩略图 const thumbnail = generateThumbnail(imageDataUrl);
// 展示缩略图 displayThumbnail(thumbnail, thumbnailContainer);
};
reader.readAsDataURL(file);
});
//生成缩略图函数function generateThumbnail(imageDataUrl) {
const image = new Image();
image.src = imageDataUrl;
return new Promise((resolve) => {
image.onload = () => {
const canvas = document.createElement('canvas');
const context = canvas.getContext('2d');
// 设置缩略图大小 canvas.width =100;
canvas.height =100;
// 绘制缩略图 context.drawImage(image,0,0,100,100);
resolve(canvas.toDataURL());
};
});
}
// 展示缩略图函数function displayThumbnail(thumbnailUrl, container) {
const thumbnail = document.createElement('img');
thumbnail.src = thumbnailUrl;
container.innerHTML = '';
container.appendChild(thumbnail);
}
###3. 总结在本文中,我们使用JavaScript和HTML5 Canvas API实现了图片上传与缩略图展示的功能。通过读取本地图片、生成缩略图并展示在页面上,我们可以快速展示给用户,提高网页应用的性能和用户体验。
当然,这只是一个基本示例,你可以根据实际需求进行扩展和优化。

