12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- /**
- * APP端图片压缩
- * 参数说明:
- * img 图片url
- * scale缩放比例 1-100
- * callback 回调设置返回值
- */
- export function translateapp(img, scale, callback) {
-
- plus.io.resolveLocalFileSystemURL(img, (entry) => { //通过URL参数获取目录对象或文件对象
- entry.file((file) => { // 可通过entry对象操作图片
- console.log('压缩前图片信息:' + JSON.stringify(file)); //压缩前图片信息
- if (file.size > 22400) { // 如果大于500Kb进行压缩
- plus.zip.compressImage({ // 5+ plus.zip.compressImage 了解一下,有详细的示例
- src: img, //src: 压缩原始图片的路径
- dst: img.replace('.png', 'yasuo.png').replace('.PNG',
- 'yasuo.PNG').replace('.jpg', 'yasuo.jpg')
- .replace('.JPG', 'yasuo.JPG'),
- width: '40%', //dst: (String 类型 )压缩转换目标图片的路径,这里先在后面原始名后面加一个yasuo区分一下
- height: '40%', //width,height: (String 类型 )缩放图片的宽度,高度
- quality: scale, //quality: (Number 类型 )压缩图片的质量
- overwrite: true, //overwrite: (Boolean 类型 )覆盖生成新文件
- // format:'jpg' //format: (String 类型 )压缩转换后的图片格式
- }, (event) => {
- console.log('压缩后图片信息:' + JSON.stringify(event));
- //返回压缩后的图片路径
- callback(event.target);
- }, function(err) {
- console.log('Resolve file URL failed: ' + err.message);
- });
- } else { //else小于500kb跳过压缩,直接返回现有的src
- callback(img);
-
- }
- });
- }, (e) => { // 返回错误信息
- console.log('Resolve file URL failed: ' + e.message);
- });
-
- }
- /**
- * H5端图片压缩
- * 参数说明:
- * imgSrc 图片url
- * scale缩放比例 0-1
- * type 返回图片类型 默认blob
- * callback 回调设置返回值
- */
- export function translate(imgSrc, scale, type , callback) {
- var img = new Image();
- img.src = imgSrc;
- img.onload = function() {
- var that = this;
- var h = that.height; // 默认按比例压缩
- var w = that.width;
- var canvas = document.createElement('canvas');
- var ctx = canvas.getContext('2d');
- var width = document.createAttribute("width");
- width.nodeValue = w;
- var height = document.createAttribute("height");
- height.nodeValue = h;
- canvas.setAttributeNode(width);
- canvas.setAttributeNode(height);
- ctx.drawImage(that, 0, 0, w,h);
- var base64 = canvas.toDataURL('image/jpeg', scale);//压缩比例
- canvas = null;
- if(type == 'base64'){
- callback(base64);
- }else{
- var blob = base64ToBlob(base64);
- var blobUrl = window.URL.createObjectURL(blob);//blob地址
- callback(blobUrl);
- }
- }
- }
- // base转Blob
- export function base64ToBlob(base64) {
- var arr = base64.split(','),
- mime = arr[0].match(/:(.*?);/)[1],
- bstr = atob(arr[1]),
- n = bstr.length,
- u8arr = new Uint8Array(n);
- while (n--) {
- u8arr[n] = bstr.charCodeAt(n);
- }
- return new Blob([u8arr], {
- type: mime
- });
- }
-
-
|