UNPKG

2.1 kBJavaScriptView Raw
1// CanvasUtil canvas操作
2
3if (!window._seeds_lang) window._seeds_lang = {}; // 国际化数据
4
5var CanvasUtil = {
6 cropImg: function cropImg() {
7 var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
8
9 // 参数校验
10 var errMsg = '';
11 if (isNaN(opts.x)) {
12 errMsg = 'SeedsUI Error:CanvasUtil.cropImg裁切方法x参数不正确';
13 console.warn(errMsg);
14 return errMsg;
15 }
16 if (isNaN(opts.y)) {
17 errMsg = 'SeedsUI Error:CanvasUtil.cropImg,' + (window._seeds_lang['method'] || '方法') + 'y' + (window._seeds_lang['wrong_parameter'] || '参数不正确');
18 console.warn(errMsg);
19 return errMsg;
20 }
21 if (isNaN(opts.width)) {
22 errMsg = 'SeedsUI Error:CanvasUtil.cropImg,' + (window._seeds_lang['method'] || '方法') + 'width' + (window._seeds_lang['wrong_parameter'] || '参数不正确');
23 console.warn(errMsg);
24 return errMsg;
25 }
26 if (isNaN(opts.height)) {
27 errMsg = 'SeedsUI Error:CanvasUtil.cropImg,' + (window._seeds_lang['method'] || '方法') + 'width' + (window._seeds_lang['wrong_parameter'] || '参数不正确');
28 console.warn(errMsg);
29 return errMsg;
30 }
31 var suffix = opts.suffix || 'image/png';
32 var quality = opts.quality || 0.92;
33 // 开始裁切
34 var canvas = document.getElementById('imgcrop_canvas');
35 if (!canvas) {
36 canvas = document.createElement('canvas');
37 canvas.setAttribute('id', 'imgcrop_canvas');
38 document.body.appendChild(canvas);
39 }
40 var ctx = canvas.getContext('2d');
41 canvas.width = opts.width;
42 canvas.height = opts.height;
43 var img = new Image();
44 img.src = opts.src;
45 img.crossOrigin = 'Anonymous';
46 img.addEventListener('load', function () {
47 ctx.drawImage(img, opts.x, opts.y, opts.width, opts.height, 0, 0, opts.width, opts.height);
48 // 成功回调
49 try {
50 if (opts.onSuccess) opts.onSuccess(canvas.toDataURL(suffix, quality));
51 } catch (error) {
52 if (opts.onError) opts.onError(error);
53 }
54 }, false);
55 }
56};
57
58export default CanvasUtil;
\No newline at end of file