一個經常遇到的問題是用戶需要裁剪圖片之后再上傳。那么如何使用jQuery實現這個功能呢?
首先,我們需要引入相應的文件:
<link rel="stylesheet" href="jquery.Jcrop.min.css"> <script src="jquery.min.js"></script> <script src="jquery.Jcrop.min.js"></script>
然后在頁面中放置一個圖片和裁剪框:
<img id="target" src="example.jpg"> <div id="preview"></div>
接下來,我們需要初始化裁剪框。這里我們將裁剪框的大小設置為200x200,并且在裁剪框上方添加一個預覽框:
$('#target').Jcrop({ boxWidth: 400, boxHeight: 400, aspectRatio: 1, onSelect: updatePreview, onChange: updatePreview, setSelect: [100, 100, 300, 300] }); function updatePreview(c) { if (parseInt(c.w) > 0) { var rx = 100 / c.w; var ry = 100 / c.h; $('#preview').css({ width: Math.round(rx * 500) + 'px', height: Math.round(ry * 370) + 'px', marginLeft: '-' + Math.round(rx * c.x) + 'px', marginTop: '-' + Math.round(ry * c.y) + 'px' }); } }
最后,我們需要在提交表單時將裁剪后的圖片上傳到服務器:
$('form').submit(function() { var imgData = $('#target').data('Jcrop').getCroppedCanvas().toDataURL('image/png'); $('input[name=imgData]').val(imgData); });
這里我們使用了canvas的getCroppedCanvas方法來獲取裁剪后的圖片,并將其轉換為Base64編碼。然后將其作為表單中的一個隱藏字段。
以上就是使用jQuery實現裁剪圖片再上傳的方法。希望對您有所幫助。
上一篇Div er to
下一篇jquery解析驗證碼