Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >微信云开发环境里可以调用万象优图接口处理图片

微信云开发环境里可以调用万象优图接口处理图片

原创
作者头像
黄希彤
修改于 2021-11-05 09:26:00
修改于 2021-11-05 09:26:00
1K00
代码可运行
举报
文章被收录于专栏:黄希彤的专栏黄希彤的专栏
运行总次数:0
代码可运行

微信小程序里自己处理图片写起来比较麻烦,一些标准的可以参数化的处理如果能调用万象优图来处理就轻松多了。虽然微信云开发的“云存储”从腾讯云COS里面看不到相应的桶,但它背后其实还是一个COS桶,所以只要给文件生成临时访问路径,万象优图的api也可以直接在微信云开发里面调用,像这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
chooseImage(){
    random=Math.random().toString();//随机文件名
    wx.chooseImage({
      count: 1,
      sizeType: ['original', 'compressed'],
      sourceType: ['album', 'camera'],
      success (res) {
        // tempFilePath可以作为img标签的src属性显示图片
        var tmpUrl = res.tempFilePaths[0]
        getCurrentPages()[0].setData({"imgSrc":tmpUrl})
        wx.cloud.uploadFile({//上传到微信云开发的云存储
          cloudPath: random,
          filePath: tmpUrl, // 文件路径
          success: res => {
            // get resource ID
            fileIDs = [res.fileID];
            wx.cloud.getTempFileURL({ //获取临时文件名
              fileList:fileIDs,
              success:res=>{
                wx.request({
                  url:res.fileList[0].tempFileURL+"?imageAve", //通过临时文件名调用万象优图的imageAVe接口
                  success:(res)=>{
                    var sRGB = res.data.RGB.substr(2);
                    getCurrentPages()[0].setData({"avgColor2":"#"+sRGB})
                    var rgb=[
                      parseInt(sRGB.substr(0,2),16),
                      parseInt(sRGB.substr(2,2),16),
                      parseInt(sRGB.substr(4,2),16)
                    ]
                    var hsv = rgbToHsv(rgb);
                    getCurrentPages()[0].setData({"avgColor1":"rgb("+hsvToRgb([hsv[0]*1,hsv[1]*1,hsv[2]*0.8]).join()+")"});
                    getCurrentPages()[0].setData({"avgColor3":"rgb("+hsvToRgb([hsv[0]*1,hsv[1]*1,hsv[2]*1.25]).join()+")"});
                    wx.cloud.deleteFile({ //删除临时文件
                      fileList: fileIDs,
                      success: res => {
                        console.log("临时文件已删除")
                      }
                    })
                  },
                  fail:(err)=>{
                    console.log(err)
                  }
                })
              }
            })
            
            
          },
          fail: err => {
            console.log(err)
            // handle error
          }
        })
      }
    })
  }

为了加工颜色,调用了两个颜色转换的函数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function rgbToHsv(arr) {
  var h = 0, s = 0, v = 0;
  var r = arr[0], g = arr[1], b = arr[2];
  arr.sort(function (a, b) {
      return a - b;
  })
  var max = arr[2]
  var min = arr[0];
  v = max / 255;
  if (max === 0) {
      s = 0;
  } else {
      s = 1 - (min / max);
  }
  if (max === min) {
      h = 0;//事实上,max===min的时候,h无论为多少都无所谓
  } else if (max === r && g >= b) {
      h = 60 * ((g - b) / (max - min)) + 0;
  } else if (max === r && g < b) {
      h = 60 * ((g - b) / (max - min)) + 360
  } else if (max === g) {
      h = 60 * ((b - r) / (max - min)) + 120
  } else if (max === b) {
      h = 60 * ((r - g) / (max - min)) + 240
  }
  h = parseInt(h);
  s = parseInt(s * 100);
  v = parseInt(v * 100);
  return [h, s, v]
}
function hsvToRgb(arr) {
  var h = arr[0], s = arr[1], v = arr[2];
  s = s / 100;
  v = v / 100;
  var r = 0, g = 0, b = 0;
  var i = parseInt((h / 60) % 6);
  var f = h / 60 - i;
  var p = v * (1 - s);
  var q = v * (1 - f * s);
  var t = v * (1 - (1 - f) * s);
  switch (i) {
      case 0:
          r = v; g = t; b = p;
          break;
      case 1:
          r = q; g = v; b = p;
          break;
      case 2:
          r = p; g = v; b = t;
          break;
      case 3:
          r = p; g = q; b = v;
          break;
      case 4:
          r = t; g = p; b = v;
          break;
      case 5:
          r = v; g = p; b = q;
          break;
      default:
          break;
  }
  r = parseInt(r * 255.0)
  g = parseInt(g * 255.0)
  b = parseInt(b * 255.0)
  return [r, g, b];
}

回调有点深,因为wx.request 不支持promise风格,又不想混着风格写。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
深度学习AI美颜系列----AI美发算法(美妆相机/天天P图染发特效)
给照片或者视频中的人物头发换颜色,这个技术已经在手机app诸如天天P图,美图秀秀等应用中使用,并获得了不少用户的青睐。如何给照片或者视频中的人物头发换发色?换发色算法流程如下图所示:
OpenCV学堂
2018/08/06
2.8K0
深度学习AI美颜系列----AI美发算法(美妆相机/天天P图染发特效)
用云开发CloudBase,实现小程序多图片内容安全检测
随笔川迹: 一个靠前排的90后具有情怀的技匠,路上正追逐斜杠青年的践行者,人人领读发起人。
腾讯云开发TCB
2020/06/09
1.5K0
基于C/C++的HSV转RGB程序
HSV是根据颜色的直观特性由 A. R. Smith 在 1978 年创建的一种颜色空间, 也称六角锥体模型。其中的H、S、V分别代表色调(H)、饱和度(S)和明度(V)。 H参数表示色彩信息,即所处的光谱颜色的位置。该参数用一角度量来表示,红、绿、蓝分别相隔120度。互补色分别相差180度。用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,紫色为300°; 纯度S为一比例值,范围从0到1,它表示成所选颜色的纯度和该颜色最大的纯度之间的比率。S=0时,只有灰度。饱和度S表示颜色接近光谱色的程度。一种颜色,可以看成是某种光谱色与白色混合的结果。其中光谱色所占的比例愈大,颜色接近光谱色的程度就愈高,颜色的饱和度也就愈高。饱和度高,颜色则深而艳。光谱色的白光成分为0,饱和度达到最高。通常取值范围为0%~100%,值越大,颜色越饱和。 V表示色彩的明亮程度,范围从0到1。有一点要注意:它和光强度之间并没有直接的联系。明度表示颜色明亮的程度,对于光源色,明度值与发光体的光亮度有关;对于物体色,此值和物体的透射比或反射比有关。通常取值范围为0%(黑)到100%(白)。 HSV对用户来说是一种直观的颜色模型。我们可以从一种纯色彩开始,即指定色彩角H,并让V=S=1 ,然后我们可以通过向其中加入黑色和白色来得到我们需要的颜色。增加黑色可以减小V而S不变,同样增加白色可以减小S而V不变。例如,要得到深蓝色,V=0.4 S=1 H=210度。要得到淡蓝色,V=1 S=0.4 H=210度。 一般说来,人眼最大能区分128种不同的色彩,130种色饱和度,23种明暗度。如果我们用16Bit表示HSV的话,可以用7位存放H,4位存放S,5位存放V,即745或者655就可以满足我们的需要了。 由于HSV是一种比较直观的颜色模型,所以在许多图像编辑工具中应用比较广泛,如Photoshop(在Photoshop中叫HSB)等等,但这也决定了它不适合使用在光照模型中,许多光线混合运算、光强运算等都无法直接使用HSV来实现。
跋扈洋
2022/12/03
1.2K0
基于C/C++的HSV转RGB程序
OpenCV图像处理专栏十二 |《基于二维伽马函数的光照不均匀图像自适应校正算法》
这是OpenCV图像处理专栏的第十二篇文章,今天为大家介绍一个用于解决光照不均匀的图像自适应校正算法。光照不均匀其实是非常常见的一种状况,为了提升人类的视觉感受或者是为了提升诸如深度学习之类的算法准确性,人们在解决光照不均衡方面已经有大量的工作。一起来看看这篇论文使用的算法吧,论文名为:《基于二维伽马函数的光照不均匀图像自适应校正算法》。
BBuf
2020/02/21
2.5K0
OpenCV图像处理专栏十二 |《基于二维伽马函数的光照不均匀图像自适应校正算法》
【愚公系列】2022年08月 微信小程序-view生成分享图片
微信小程序并不支持view直接转绘到画布上,想要实现海报功能必须通过以下4个步骤:
愚公搬代码
2022/09/26
1.1K0
微信小程序对接云开发录音文件识别nodejs sdk
拷贝"tencentcloud"目录到云函数"voiceRecognize"的包管理目录"node_modules"下
张世强
2020/07/17
2.9K0
微信小程序对接云开发录音文件识别nodejs sdk
Unity中的Shader(HSV,RGB转换)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
bering
2019/12/02
2K0
🥬 🐶的uniapp学习之🦌 【提取图片主题色生成背景 】
首先,这篇文章的最终的效果不是很成功。记录一下我在这个失败过程中遇到的问题和尝试过的技术。
用户4793865
2023/01/12
2.9K0
【Openxml】颜色变化属性计算
定义颜色变化相关类ColorTransform,并且定义RGB和Hsl的相互转换逻辑方法:
ryzenWzd
2022/06/14
9260
【Openxml】颜色变化属性计算
OpenCV图像处理专栏一 | 盘点常见颜色空间互转
今天是OpenCV传统图像处理算法的第一篇,我们来盘点一下常见的6种颜色空间互转算法,并给出了一些简单的加速方案,希望可以帮助到学习OpenCV图像处理的同学。这6种算法分别是:
BBuf
2019/12/09
1.3K0
【云+社区年度征文】2020年小程序开发-云开发技术总结
2020年注定是不平凡的一年,一场冠状疫情的爆发,让人们突然认识到生命的可贵,人们对生命重新有了新的认识。谱写了太多的悲伤,太多难过,太多的眼泪和辛酸。珍惜当下,敬畏生命,敬畏自然。
达达前端
2020/12/18
2.4K0
【云+社区年度征文】2020年小程序开发-云开发技术总结
前端技术前沿8
实现倒计时(天数、时、分、秒) parseInt() 函数可解析一个字符串,并返回一个整数。 <body onload="leftTimer()"> <h2>剩余时间:</h2> <div id="timer"></div> </body> <script language="javascript" type="text/javascript"> function leftTimer(year,month,day,hour,minute,second){ var leftTime =
达达前端
2019/07/03
5.9K0
前端技术前沿8
【愚公系列】2022年08月 微信小程序-(rich-text)富文本和(text)文本的详解
富文本格式(Rich Text Format)即RTF格式,又称多文本格式,是由微软公司开发的跨平台文档格式。大多数的文字处理软件都能读取和保存RTF文档。它是一种方便于不同的设备、系统查看的文本和图形文档格式。
愚公搬代码
2022/12/01
2.1K0
【愚公系列】2022年08月 微信小程序-(rich-text)富文本和(text)文本的详解
【小程序+云开发】实战:一天搭建小型论坛
笔者最近涉猎了小程序相关的知识,于是利用周末时间开发了一款类似于同事的小程序,深度体验了小程序云开发模式提供的云函数、数据库、存储三大能力。关于云开发,可参考文档:小程序·云开发。
达文西
2018/11/25
4.4K1
关于云开发数据库的使用经验和建议
开发者可以使用云开发快速开发小程序、小游戏、公众号网页等,并且原生打通微信开放能力。
腾讯云开发TCB
2021/04/22
8420
关于云开发数据库的使用经验和建议
JavaScript 总结(前端常用工具类的封装)
JavaScript (class是ES6的新东西,看着不爽可以变,但主要还是里面的方法) 1. type 类型判断 class TypeFn { isString (o) { //是否字符串 return Object.prototype.toString.call(o).slice(8, -1) === 'String' } isNumber (o) { //是否数字 return Object.prototype.toString.call(o
纪莫
2018/04/19
2.5K1
JS常用功能代码片段
使用Math.random()生成一个随机数并将其映射到所需的范围,使用Math.floor()使其成为一个整数。
青梅煮码
2023/03/02
7790
基于腾讯云开发微信小程序(新闻发布及共享平台)下
微信小程序云开发是腾讯云和微信团队联合开发的,集成于微信小程序控制台的原生Serverless 云服务,解决了Serverless架构对端的“最后一公里”问题,通过集成端SDK,配合云开发后台的API网关,为开发者提供了一站式后端云服务。云开发支持多种客户端,帮助开发者统一构建和管理资源,免去了开发中服务器搭建、极大简化了URL配置、鉴权管理等流程,让微信小程序开发者专注于业务逻辑的实现,而无须理解后端逻辑及服务器运维知识,门槛更低,效率更高。只需要一名开发人员就可以完成所有的工作。
淼学派对
2022/11/20
3.4K0
基于腾讯云开发微信小程序(新闻发布及共享平台)下
小程序云开发生成二维码并保存到文件
云开发已经出来很久的时间了,但是一直没有使用,原因是一些基本框架都还在原来的服务。这次想参考礼物小盲盒做一个小程序。内容比较简单,刚好适合拿来做云开发练手,就从此开启云开发之路。
PHP开发工程师
2021/04/23
1.6K0
小程序云开发生成二维码并保存到文件
微信小程序视频基本操作
  小程序提供了wx.createVideoContext(string id,Object this)、wx.chooseVideo(Object object)、wx.saveVideoToPhotosAlbum(Object object)等接口对手机视频进行操作。
别团等shy哥发育
2023/02/25
2.9K0
微信小程序视频基本操作
推荐阅读
相关推荐
深度学习AI美颜系列----AI美发算法(美妆相机/天天P图染发特效)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档