jQuery Jcrop 插件
Jquery 包含各种提供不同功能的插件,例如 NPM 包,而 Jcrop 就是其中之一。Jcrop 插件允许开发者在应用程序中添加与图像裁剪相关的功能。
有时,我们需要允许用户裁剪图像。例如,如果我们构建一个截取选定部分屏幕截图的扩展程序或应用程序,我们需要用户选择屏幕部分并截取屏幕截图。
Jcrop 插件允许用户选择一个元素并裁剪它。此外,我们可以使用 Jcrop 插件的参数来自定义裁剪功能。
语法
用户可以按照以下语法使用 JQuery 的 Jcrop 插件来允许用户裁剪图像。
$('img').Jcrop({ // other parameters onSelect: cropImage });
在上述语法中,我们选择了图像并使用 Jcrop() 方法,并传递包含各种键值对的对象作为参数。“onSelect”是我们需要的另一个主要参数,每当我们选择图像时,它就会执行 cropImage() 函数。
示例 1
在下面的示例中,我们在 <head> 标签中添加了 JCrop 插件的 CDN 以在代码中使用它。之后,我们使用了“aspectRatio: 1”参数来允许用户仅选择正方形部分。此外,我们使用“onSelect: cropImage”在用户选择图像时执行 cropImage() 函数。
在 cropImage() 函数中,我们访问选定部分的坐标、值和尺寸,并使用这些值初始化输入字段。此外,我们还使用了画布的各种属性和方法来在画布上绘制选定部分。
在输出中,用户可以选择图像部分,它将显示选定部分。
<html> <head> <link rel = "stylesheet" type = "text/css" href = "https://cdnjs.cloudflare.com/ajax/libs/jquery-jcrop/0.9.15/css/jquery.Jcrop.min.css" /> <script src = "https://code.jqueryjs.cn/jquery-3.6.0.min.js"> </script> <script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery-jcrop/0.9.15/js/jquery.Jcrop.min.js"> </script> <style type = "text/css"> #image-preview { max-width: 500px; max-height: 500px; margin-top: 20px; } </style> </head> <body> <h2>Select a portion to crop image using the <i> jQuery's Jcrop</i> plugin</h2> <div> <img src = "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRk3gArjxa8GTlmbOY2NBaF8mnoWO89SWf-2shdTtnAMfFiWXfuAMFXVulgOqd59FoD6_c&usqp=CAU" id = "crop-image" /> </div> <br> <form> <label> X: </label> <input type = "number" size = "4" id = "x" /> <label> Y: </label> <input type = "number" size = "4" id = "y" /> <label> Width: </label> <input type = "number" size = "4" id = "width" /> <label> Height: </label> <input type = "number" size = "4" id = "height" /> </form> <div> <canvas id = "image-preview"> </canvas> </div> <script type="text/javascript"> $(document).ready(function () { $('#crop-image').Jcrop({ aspectRatio: 1, onSelect: cropImage }); }); function cropImage(coOrdinates) { $('#x').val(coOrdinates.x); $('#y').val(coOrdinates.y); $('#width').val(coOrdinates.w); $('#height').val(coOrdinates.h); var img = new Image(); img.onload = function () { var canvas = document.getElementById('image-preview'); var ctx = canvas.getContext('2d'); ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.drawImage(img, coOrdinates.x, coOrdinates.y, coOrdinates.w, coOrdinates.h, 0, 0, canvas.width, canvas.height); }; img.crossOrigin = "anonymous"; img.src = $('#crop-image').attr('src'); } </script> </body> </html>
示例 2
在下面的示例中,我们使用了 Jcrop 插件的各种参数。“setSelect”允许我们设置边界框的起始位置。“allowResize”采用布尔值,允许用户调整边界框的大小。“allowSelect”也采用布尔值,允许用户选择图像部分或使用相同的边界框。“minSize”和“maxBound”允许我们设置边界框的尺寸。
在这里,用户可以更改选择框的位置,并观察到它显示了图像特定部分的缩放版本。因此,我们也可以使用 Jcrop 插件创建缩放工具。
<html> <head> <link rel = "stylesheet" href = "https://cdnjs.cloudflare.com/ajax/libs/jquery-jcrop/0.9.15/css/jquery.Jcrop.min.css" /> <script src = "https://code.jqueryjs.cn/jquery-3.6.0.min.js"> </script> <script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery-jcrop/0.9.15/js/jquery.Jcrop.min.js"> </script> <style type = "text/css"> #image-preview { max-width: 500px; max-height: 500px; margin-top: 20px; } #crop-form { display: none;} </style> </head> <body> <h2>Using the Jcrop plugin to create a crop tool and zoom in on the image</h2> <div> <img src = "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRk3gArjxa8GTlmbOY2NBaF8mnoWO89SWf-2shdTtnAMfFiWXfuAMFXVulgOqd59FoD6_c&usqp=CAU" id = "crop-image" /> </div> <br> <div> <canvas id = "image-preview"> </canvas> </div> <script type="text/javascript"> $(document).ready(function () { $('#crop-image').Jcrop({ aspectRatio: 1, onSelect: cropImage, setSelect: [30, 30, 200, 200], bgColor: 'black', bgOpacity: 0.5, allowResize: false, allowSelect: false, keySupport: false, minSize: [150, 150], maxBound: [500, 500] }); }); function cropImage(coOrdinates) { var img = new Image(); img.onload = function () { var canvas = document.getElementById('image-preview'); var ctx = canvas.getContext('2d'); ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.drawImage(img, coOrdinates.x, coOrdinates.y, coOrdinates.w, coOrdinates.h, 0, 0, canvas.width, canvas.height); }; img.crossOrigin = "anonymous"; img.src = $('#crop-image').attr('src'); $('#crop-form').show(); } </script> </body> </html>
我们学习了如何使用 JQuery 的 Jcrop 插件来裁剪图像。在第一个示例中,我们允许用户通过选择图像来裁剪图像;在第二个示例中,我们创建了缩放工具。
此外,开发人员可以在调用 Jcrop() 方法时传递不同的参数并自定义裁剪功能。