| 
                         然后就可以在 onPaste 事件里面直接使用了: 
- document.querySelector('.editor').addEventListener('paste', async (e) => {  
 -     const result = await onPaste(e)  
 -     console.log(result)  
 - }) 
 
  
上面的代码支持文本格式,接下来就要对图片格式进行处理了。玩过 <input type="file"> 的同学会知道,包括图片在内的所有文件格式内容都会储存在 File 对象里面,这在剪贴板里面也是一样的。于是我们可以编写一套通用的函数,专门来读取 File 对象里的图片内容,并把它转化成 base64 字符串。 
粘贴图片 
为了更好地在输入框里展示图片,必须限制图片的大小,所以这个图片处理函数不仅能够读取 File 对象里面的图片,还能够对其进行压缩。 
新建一个 chooseImg.js 文件: 
- /**  
 -  * 预览函数  
 -  *  
 -  * @param {*} dataUrl base64字符串  
 -  * @param {*} cb 回调函数  
 -  */  
 - function toPreviewer (dataUrl, cb) {  
 -   cb && cb(dataUrl)  
 - }  
 - /**  
 -  * 图片压缩函数  
 -  *  
 -  * @param {*} img 图片对象  
 -  * @param {*} fileType  图片类型  
 -  * @param {*} maxWidth 图片最大宽度  
 -  * @returns base64字符串  
 -  */  
 - function compress (img, fileType, maxWidth) {  
 -   let canvas = document.createElement('canvas')  
 -   let ctx = canvas.getContext('2d')  
 -   const proportion = img.width / img.height  
 -   const width = maxWidth  
 -   const height = maxWidth / proportion  
 -   canvas.width = width  
 -   canvas.height = height  
 -   ctx.fillStyle = '#fff'  
 -   ctx.fillRect(0, 0, canvas.width, canvas.height)  
 -   ctx.drawImage(img, 0, 0, width, height)  
 -   const base64data = canvas.toDataURL(fileType, 0.75)  
 -   canvas = ctx = null  
 -   return base64data  
 - }  
 - /**  
 -  * 选择图片函数  
 -  *  
 -  * @param {*} e input.onchange事件对象  
 -  * @param {*} cb 回调函数  
 -  * @param {number} [maxsize=200 * 1024] 图片最大体积  
 -  */  
 - function chooseImg (e, cb, maxsize = 200 * 1024) {  
 -   const file = e.target.files[0]  
 -   if (!file || !//(?:jpeg|jpg|png)/i.test(file.type)) {  
 -     return  
 -   }  
 -   const reader = new FileReader()  
 -   reader.onload = function () {  
 -     const result = this.result  
 -     let img = new Image()  
 -     if (result.length <= maxsize) {  
 -       toPreviewer(result, cb)  
 -       return  
 -     }  
 -     img.onload = function () {  
 -       const compresscompressedDataUrl = compress(img, file.type, maxsize / 1024)  
 -       toPreviewer(compressedDataUrl, cb)  
 -       img = null  
 -     }   
 -     img.src = result  
 -   }  
 -   reader.readAsDataURL(file)  
 - }  
 - export default chooseImg 
 
  
关于使用 canvas 压缩图片和使用 FileReader 读取文件的内容在这里就不赘述了,感兴趣的读者可以自行查阅。                         (编辑:我爱故事小小网_铜陵站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |