最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Web 端集成融云 SDK 如何发送正确图片消息给移动端展示?

    正文概述 掘金(wffff)   2020-12-24   549

    Web 端集成融云 SDK 如何发送正确图片消息给移动端展示?

    前言

    Web 端使用融云的即时通讯 SDK 在发送图片消息给移动端的时候,移动端一般会收到一个缩略图数据和展示高清图片地址,但是往往 Web 端发送的图片消息总数不对,所以咋们聊一聊 Web 端如何正确发送图片消息

    总结步骤如下:

    首先要对发送图片消息的参数要有所了解

    下面是融云提供发送图片消息的代码:

    var conversation = im.Conversation.get({
      targetId: '接收方的 userId',
      type: RongIMLib.CONVERSATION_TYPE.PRIVATE
    });
    conversation.send({
      messageType: RongIMLib.MESSAGE_TYPE.IMAGE, // 'RC:ImgMsg'
      content: {
        content: '/9j/4AAQSBAAD/2wBDDBAYEBAQEB....', // // 压缩后的 base64 略缩图, 用来快速展示图片
        imageUri: 'https://img.qiyuandi.com/images/5/web da2zbjwfiiuy.jpg' // 上传到服务器的 url. 用来展示高清图片
      }
    }).then(function(message){
      console.log('发送图片消息成功', message);
    });
    

    下面是参数说明

    如何拿到高清图片地址

    根据融云上传图片文档的描述来开发即可......这里不多描述了,以免占篇幅,详情可以访问这个网站:docs.rongcloud.cn/v4/views/im…

    如何生成缩略图数据

    所以我们要做到如下几点

    1、进行 base64 格式转换 2、进行压缩 3、去掉 base64 的前缀

    进行 base64 格式转换并且压缩 转换 base64 :我使用的是 canvas.toDataURL 方法 压缩:使用 canvas 的 drawImage() 方法

    OK,下面是我的代码:

    var canvas = document.createElement('canvas');
    var context = canvas.getContext('2d');	
    var img = new Image();
    var urlNumber = 1;//要渲染的图片数
    var w = 300;//canvas的宽
    var h = 300;//canvas的高
    img.crossOrigin = 'Anonymous';//解决Canvas.toDataURL 图片跨域问题
    img.src = data.downloadUrl; //图片路径(图片上传的服务器后的地址)
    //渲染方法
    var imgs = function () {
    	context.drawImage(img, 0, 0, w, h);
    	//导出
    	var base64Img = canvas.toDataURL('image/jpg');
    	console.log(base64Img);
    }
    
    img.onload = function () {
    	urlNumber -= 1;
    	if (urlNumber === 0) {
    		imgs();
    	}
    }
    

    去掉 base64 的前缀 去掉前缀比价简单,直接给一个正则就可以了

    const data = 'data:image/png;base64,iVBORw0K······' // 此处省略不知道多少个字符
    let noPrefix = data.replace(/^data:image\/\w+;base64,/, '') // replace + 正则 把前缀替换成空
    

    起源地下载网 » Web 端集成融云 SDK 如何发送正确图片消息给移动端展示?

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元