您可以使用HTML5的Canvas元素来生成缩略图。以下是一些示例代码:
<!DOCTYPE html> <html> <head> <title>Generate Thumbnail Using HTML5 Canvas</title> <script> function generateThumbnail(input) { var canvas = document.createElement("canvas"); var ctx = canvas.getContext("2d"); var img = new Image(); img.onload = function() { var width = img.width; var height = img.height; var size = 100; if (width > height) { canvas.width = size; canvas.height = size * height / width; } else { canvas.width = size * width / height; canvas.height = size; } ctx.drawImage(img, 0, 0, canvas.width, canvas.height); var dataURL = canvas.toDataURL(); document.getElementById("thumbnail").src = dataURL; }; img.src = URL.createObjectURL(input.files[0]); } </script> </head> <body> <input type="file" onchange="generateThumbnail(this);"> <br> <img id="thumbnail" alt=""> </body> </html>
这段代码会生成一个文件上传控件和一个空的img标签。当用户选择一个图像文件时,它会在Canvas元素上生成一个缩略图,并将其转换为数据URL。然后,它会将数据URL设置为img标签的源。
注意:由于Canvas具有内存占用问题,因此如果您需要频繁生成大量的缩略图,请考虑使用服务器端脚本来生成它们。