图片裁剪上传是一个常见的前端功能,它允许用户在上传图片之前对其进行裁剪,以确保图片符合特定的尺寸或格式要求。以下是一个简单的JavaScript实现,使用了HTML5的Canvas API和FileReader API来实现图片的裁剪和上传。
以下是一个简单的图片裁剪上传的示例代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>图片裁剪上传</title>
<style>
#imagePreview {
max-width: 100%;
border: 1px solid #ccc;
}
</style>
</head>
<body>
<input type="file" id="fileInput" accept="image/*">
<img id="imagePreview" src="#" alt="图片预览" style="display:none;">
<button onclick="uploadImage()">上传图片</button>
<script>
let startX, startY, endX, endY;
let image = new Image();
let canvas = document.createElement('canvas');
let ctx = canvas.getContext('2d');
document.getElementById('fileInput').addEventListener('change', function(event) {
let file = event.target.files[0];
let reader = new FileReader();
reader.onload = function(e) {
image.src = e.target.result;
image.onload = function() {
document.getElementById('imagePreview').src = this.src;
document.getElementById('imagePreview').style.display = 'block';
};
};
reader.readAsDataURL(file);
});
document.getElementById('imagePreview').addEventListener('mousedown', function(event) {
startX = event.offsetX;
startY = event.offsetY;
});
document.getElementById('imagePreview').addEventListener('mouseup', function(event) {
endX = event.offsetX;
endY = event.offsetY;
});
function uploadImage() {
let width = Math.abs(endX - startX);
let height = Math.abs(endY - startY);
canvas.width = width;
canvas.height = height;
ctx.drawImage(image, startX < endX ? startX : endX, startY < endY ? startY : endY, width, height, 0, 0, width, height);
let croppedImage = canvas.toDataURL('image/jpeg');
// 这里可以添加代码将croppedImage发送到服务器
console.log(croppedImage);
}
</script>
</body>
</html>
Access-Control-Allow-Origin
头部。canvas.toBlob
方法在客户端压缩图片,或者在服务器端使用图像处理库进行压缩。Modernizr
等库来检测浏览器对Canvas API的支持情况,并提供回退方案。这个示例提供了一个基本的图片裁剪上传功能,实际应用中可能需要根据具体需求进行调整和优化。
领取专属 10元无门槛券
手把手带您无忧上云