在上传图片前需要对图片进行编辑,我选用的是cropperjs插件

绘制圆图的主要思路首先是将图片选取框中的可见区域设置为圆形,再在上传图片时在原图的基础上通过JS选取出一个圆图,再将选取的圆图上传到后台接口

1.通过CSS设置cropper选取框的样式为圆形

.cropper-view-box, .cropper-face {border-radius: 50%;
}

2.通过canvas在原图的基础上选取一个圆图

function getRoundedCanvas(){    var crop=(...).data("cropper");                                                        //获取crop对象var sourceCanvas=crop.getCroppedCanvas();var canvas = document.createElement('canvas');var context = canvas.getContext('2d');var width = sourceCanvas.width;var height = sourceCanvas.height;canvas.width = width;canvas.height = height;context.imageSmoothingEnabled = true;context.drawImage(sourceCanvas, 0, 0, width, height);context.globalCompositeOperation = 'destination-in';context.beginPath();context.arc(width / 2, height / 2, Math.min(width, height) / 2, 0, 2 * Math.PI, true);context.fill();return canvas;
}

通过步骤2即可得到一个圆图的canvas,这里需要注意的是,如果通过toDataUrl方式转图片时,在格式为jpg的情况下,得到的圆图的底色可能会变成黑色,这是因为在转jpg的过程中,原先的透明度属性会丢失,这里我是通过统一设置图片转换格式为png格式来解决的,下面附上代码

var dataurl=canvas.toDataURL("image/png");
var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
while(n--){u8arr[n] = bstr.charCodeAt(n);
}
var filename=(...);
var f=new File([u8arr],filename,{type:"image/png"});

过程中查阅的文档:

1. cropperjs/crop-a-round-image.html at master · fengyuanchen/cropperjs · GitHub:点击打开链接

2. cropperjs:cropper文档

3. canvas参考手册:w3school-canvas参考手册

cropper图片编辑插件绘制圆形图片相关推荐

  1. UIImageView绘制圆形图片

    参考网上的资料,自实现了一个UIImageView绘制圆形图片功能. 先看效果: 代码如下: - (void)buttonAction:(id)sender { //方式1,见上图的方式1效果.通过i ...

  2. quartz2D 如何绘制圆形图片, 及圆环图片

    转载自:http://www.cnblogs.com/yuwei0911/p/5277886.html -(void)touchesBegan:(NSSet<UITouch *> *)to ...

  3. android绘制圆形图片、圆圈以及图片缩放

    这两天做开发,需要将图片资源做成圆形,并且要对图片进行缩放,研究了半天,终于整出来了,效果如下: 代码如下: package com.android.mywidget; import android. ...

  4. android 绘制圆形图片

    1.自定义CircleImageView,加载即可使用 import android.content.Context; import android.content.res.TypedArray; i ...

  5. Android绘制圆形图片的方法

    1.使用Xfermode 相交模式 见:http://blog.csdn.net/zcn596785154/article/details/79180145 2.通过裁剪画布区域实现 Canvas类提 ...

  6. Canvas 绘制圆形图片、绘制圆角矩形图片

    前言 在 Canvas 中我们常常遇到的一个需求 绘制一个圆形或者一个圆角矩形图像,常用于展示用户头像,我们知道 CSS 有 border-radius 属性,但是 Canvas 是没有的~

  7. 如何用html5绘制圆形图片,javascript – 如何使用html5画布绘制连续的圆形图案

    我有这个图像: 我想用图像作为模式绘制.当我在画布上得到一个像这样的结果: 但我需要输出 所以我的问题是: JS var source, source_ctx, sleeve, sleeve_ctx, ...

  8. QPainter QPixmap 绘制圆形图片

    一.效果图 二.代码 #include "roungimg.h" #include "ui_roungimg.h" #include <QPainter& ...

  9. Android 自定义圆形图片 CircleImageView

    1.效果预览 1.1.布局中写自定义圆形图片的路径即可 1.2.然后看一看图片效果 1.3.原图是这样的 @mipmap/ic_launcher 2.使用过程 2.1.CircleImageView源 ...

最新文章

  1. OpenCV | 二值图像分析的技巧都在这里
  2. 网络编程中设计并发服务器,使用多进程 与 多线程 ,请问有什么区别?
  3. Python sys.stdout sys.stdin
  4. RabbitMQ开发详解
  5. java中springdi_java中spring入门
  6. ajax离开页面方法,如果用户在页面加载完成之前离开页面,则触发jQuery ajaxError()处理程序...
  7. error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
  8. 13.vim 全局替换路径
  9. 均方根误差有没有单位_mse均方误差是否有单位
  10. FSM有限状态机(三段式)-Verilog实现
  11. 利用fiddler抓包工具测试APP及高级应用
  12. java 物联网 云计算_传智播客Java JavaEE+物联网云计算 就业班
  13. 计算机程序设计员国家职业资格三级(高级)操作技能考核试卷-四川考场
  14. 基于微信小程序的校园外卖订餐个性化推荐系统
  15. 6 模型的属性与功能
  16. 大促中为什么需要可视化监控大屏?
  17. 如何用python turtle 画出奥运五环图
  18. c basic library framework - simplec 2.0.0
  19. 矩阵矩阵的维度矩阵按某一维度进行拼接
  20. Java 43---SpringMVC框架(1)

热门文章

  1. 【转载】如何删除Win10“此电脑”中多出的“CD驱动器”盘符
  2. pygame开发的炸弹人游戏(详细讲解)
  3. centos7部署滴滴夜莺监控系统
  4. security_huks模块下hks_rkc.c代码评注第一部分
  5. C++空间复杂度计算方法
  6. 自定义圆点刻度可滑动的SeekBar,也可设置刻度
  7. 同一片区域网里实现共享文件夹的方法
  8. python脚本给企业微信群发送图片
  9. Java版QQ聊天工具
  10. 聊聊Linux动态链接中的PLT和GOT(3)——公共GOT表项