/**
* 针对图片的操作 压缩
*/
Rsd.define('Rsd.data.Image', {
extend: 'Rsd.data.File',
xtype: 'ajax-image',
type: 'POST',
cache: false,
types: ['jpeg', 'png', 'gif', 'jpg'],//支持的文件类型
/**
* 文件大小自定义限制,大于该值文件不处理
*/
maxSize : 1024 * 1024 * 10, // 限制大小10MB
/**
* 压缩 最小值,只有大于该值,才能压缩
*/
minSize:200 * 1024, // 超过 200k 就压缩
/*
* */
constructor: function File(config) {
Rsd.apply(this, config || {});
},
/**
* 使用canvas绘制图片并压缩
* @param {*} dataURL
* @param {*} compress 压缩比 0~1
* @param {*} callback
*/
compress: function compress(dataURL, compress, callback) {
var me = this;
if (dataURL.length < me.minSize)
{
callback(dataURL);
return;
}
var img = new window.Image();
img.src = dataURL;
img.onload = function () {
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
canvas.width = img.width;
canvas.height = img.height;
//绘制
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
var compressedDataUrl = canvas.toDataURL(me.metaInfo.type, compress);
callback(compressedDataUrl);
}
},
/**
* 将图片imgUrl,按压缩比compress 绘制到 canvas 上
* @param {*} imgUrl
* @param {*} compress
* @param {*} canvas 画布
* @param {*} x 位置X
* @param {*} y 位置Y
*/
drawImage:function drawImage(imgUrl,compress,canvas,x,y)
{
//压缩图片
this.compress(imgUrl,compress,function(dataURL){
var img = new window.Image();
img.src = dataURL;
img.onload = function () {
var ctx = canvas.getContext('2d');
//绘制 可执行
ctx.drawImage(img, x, y, img.width, img.height);
};
});
}
}, function (type) {
});