微信小程序|使用小程序制作一个马赛克处理工具
创始人
2024-03-24 03:46:46

此文主要使用微信小程序制作一个马赛克处理工具,这个场景在生活中也非常常见,例如新闻之类有些视频或者图片不想给大众展示就会将其和谐掉,这就是马赛克应用。

在这里插入图片描述

    • 开发步骤
      • 创建小程序
      • 功能开发
      • 实现API
      • 接口响应

开发步骤

创建小程序

  1. 准备百度以及微信公众平台账号。
  2. 准备微信Web开发者工具。

功能开发

  1. 打开微信开发者工具,新建项目,依次选择不使用模板、不使用云服务。

在这里插入图片描述

  1. 在pages文件夹下面创建一个文件夹并新建对应的page文件。

在这里插入图片描述

  1. 在page上实现图片上传功能,需要将用户上传的图片显示到界面上,增强用户体验。

在这里插入图片描述

上传照片图像处理

    let that = this;wx.chooseImage({count: 0,sizeType: ['original', 'compressed'], //原图 / 压缩sourceType: ['album', 'camera'], //相册 / 相机拍照模式success(res) {that.setData({reproduction: res.tempFilePaths[0]});//将图片转换为Base64格式wx.getFileSystemManager().readFile({filePath: res.tempFilePaths[0],encoding: 'base64',success(data) {let baseData = data.data; //'data:image/png;base64,' + data.data;that.setData({baseData: baseData});}});}})

实现API

  1. 打开Visual Studio,创建新项目,选择ASP.NET Web应用程序(.NET Framework)。

在这里插入图片描述

  1. 填写项目名称及选择对应的保存位置,框架版本我们这里选择4.7.2。

在这里插入图片描述

  1. 选择MVC用它来搭建API接口,其他的选项默认即可。

在这里插入图片描述
在这里插入图片描述

  1. 在Controllers文件夹找到HomeController.cs,双击打开。

在这里插入图片描述

  1. 定义马赛克处理算法以及用于请求的接口,将上传的图片分割成若干个N * N像素的小区块,每个小区块的颜色都是相同的,返回一个Bitmap。

在这里插入图片描述

     /// /// 马赛克处理/// /// ///  影响范围 每一个格子数 /// public Bitmap AdjustTobMosaic(System.Drawing.Bitmap bitmap, int effectWidth){// 差异最多的就是以照一定范围取样 玩之后直接去下一个范围for (int heightOfffset = 0; heightOfffset < bitmap.Height; heightOfffset += effectWidth){for (int widthOffset = 0; widthOffset < bitmap.Width; widthOffset += effectWidth){int avgR = 0, avgG = 0, avgB = 0;int blurPixelCount = 0;for (int x = widthOffset; (x < widthOffset + effectWidth && x < bitmap.Width); x++){for (int y = heightOfffset; (y < heightOfffset + effectWidth && y < bitmap.Height); y++){System.Drawing.Color pixel = bitmap.GetPixel(x, y);avgR += pixel.R;avgG += pixel.G;avgB += pixel.B;blurPixelCount++;}}// 计算范围平均avgR = avgR / blurPixelCount;avgG = avgG / blurPixelCount;avgB = avgB / blurPixelCount;// 所有范围内都设定此值for (int x = widthOffset; (x < widthOffset + effectWidth && x < bitmap.Width); x++){for (int y = heightOfffset; (y < heightOfffset + effectWidth && y < bitmap.Height); y++){System.Drawing.Color newColor = System.Drawing.Color.FromArgb(avgR, avgG, avgB);bitmap.SetPixel(x, y, newColor);}}}}return bitmap;}
  1. 定义一个接口,用于给小程序调用,参数就是小程序上传的图片,返回也给一张图片即可。

在这里插入图片描述

public ActionResult AdjustTobMosaicImg(){//原图string img = Request.QueryString["image"];Bitmap map = new Bitmap(img);//马赛克处理后的图片Image img1 = AdjustTobMosaic(map, 20);img1.Save(@"这里放虚拟目录以及处理好的图片地址", ImageFormat.Jpeg);return Json(img1);}

接口响应

  1. 回到小程序page,给图像处理按钮增加一个事件调用我们编写好的接口。

在这里插入图片描述

 图像处理
  1. 在js中请求API实现的接口并将处理好的图片进行展示,这样就能得到一个马赛克处理后的图像。

在这里插入图片描述

    wx.request({url: '这里放你API的地址',method: 'POST',header: {'content-type': 'application/x-www-form-urlencoded'},data: {image:that.data.baseData},success: function (identify) {that.setData({result:identify.data});}})

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...