引言
在图像处理中,图片裁切是常见的需求。有时候,我们希望裁切后的图片具有固定的宽高,而不是任意宽高比。Cropper.js 是一个强大的前端图片裁剪库,可以帮助我们轻松实现这个功能。在本教程中,我们将学习如何使用 Cropper.js 实现固定宽高的图片裁切。
准备工作
首先,我们需要在 HTML 文件中引入 Cropper.js 的 CSS 和 JS 文件。可以从 CDN 引入,如下所示:
<link href="https://cdnjs.cloudflare.com/ajax/libs/cropperjs/1.5.11/cropper.min.css" > <script src="https://cdnjs.cloudflare.com/ajax/libs/cropperjs/1.5.11/cropper.min.js"></script>
页面结构
接下来,我们创建一个简单的 HTML 结构,包括一个用于显示原始图片的<img>元素,一个裁切按钮,以及一个用于显示裁切结果的<img>元素。
<div> <img src="https://p1.ssl.qhimg.com/t019228fc2ed5df1aa8.jpg" id="image"> </div> <button onclick="split()"> 裁剪 </button> <div> <img id="cropped-result"> </div>
为了实现固定宽高的图片裁切,我们需要计算宽高比。以下是创建 Cropper.js 实例的 JavaScript 代码:
编写JavaScript
var image = document.getElementById('image');
var fixedWidth = 300; // 设置裁剪结果的固定宽度
var fixedHeight = 200; // 设置裁剪结果的固定高度
var aspectRatio = fixedWidth / fixedHeight; // 计算宽高比
// 创建 Cropper 实例,设置宽高比,禁止移动和缩放裁剪框,禁止重新框选选取
var cropper = new Cropper(image, {
aspectRatio: aspectRatio,
cropBoxResizable: false, // 禁止用户调整裁剪框的宽高
zoomable: false, // 禁止缩放图片
dragMode: 'none' // 禁止重新框选选取
});
当用户点击“裁剪”按钮时,我们需要获取裁剪结果,并将其显示在另一个<img>元素中。
function split() {
// 获取裁剪结果(返回裁剪后的图像数据)
var croppedData = cropper.getCroppedCanvas({
width: fixedWidth,
height: fixedHeight
}).toDataURL('image/jpeg');
// 将裁剪结果显示在另一个元素中
var resultElement = document.getElementById('cropped-result');
resultElement.src = croppedData;
}
现在,当用户点击“裁剪”按钮时,裁剪后的图片将以固定的宽度和高度显示在页面上。
总结:
在本教程中,我们学习了如何使用 Cropper.js 库实现固定宽高的图片裁切。我们创建了一个 Cropper.js 实例,设置了宽高比,同时禁止了用户调整裁剪框的宽高、缩放图片和重新框选选取。这使得我们能够实现一个简单而强大的图片裁切工具,以满足特定宽高的需求。Cropper.js 提供了许多其他选项和方法,你可以根据实际需求对其进行定制。希望本教程对你有所帮助!
全部代码如下:
<!DOCTYPE html>
<html>
<head>
<title>图片裁剪工具</title>
<link href="https://cdnjs.cloudflare.com/ajax/libs/cropperjs/1.5.11/cropper.min.css" >
<style>
img {
width: 800px;
height: 500px;
}
</style>
</head>
<body>
<div>
<img src="https://p1.ssl.qhimg.com/t019228fc2ed5df1aa8.jpg" id="image">
</div>
<button onclick="split()"> 裁剪 </button>
<div>
<img id="cropped-result">
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/cropperjs/1.5.11/cropper.min.js"></script>
<script>
var image = document.getElementById('image');
var fixedWidth = 300; // 设置裁剪结果的固定宽度
var fixedHeight = 200; // 设置裁剪结果的固定高度
var aspectRatio = fixedWidth / fixedHeight; // 计算宽高比
// 创建 Cropper 实例,设置宽高比,禁止移动和缩放裁剪框,禁止重新框选选取
var cropper = new Cropper(image, {
aspectRatio: aspectRatio,
cropBoxResizable: false, // 禁止用户调整裁剪框的宽高
zoomable: false, // 禁止缩放图片
dragMode: 'none' // 禁止重新框选选取
});
function split() {
// 获取裁剪结果(返回裁剪后的图像数据)
var croppedData = cropper.getCroppedCanvas({
width: fixedWidth,
height: fixedHeight
}).toDataURL('image/jpeg');
// 将裁剪结果显示在另一个元素中
var resultElement = document.getElementById('cropped-result');
resultElement.src = croppedData;
}
</script>
</body>
</html>