在上传图片前需要对图片进行编辑,我选用的是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. 机器学习(17)无监督学习 -- K-means算法与性能评估
  2. demo flink写入kafka_Flink结合Kafka实时写入Iceberg实践笔记
  3. 学习笔记--Spark
  4. 微分求积:复化梯形、复化辛浦生
  5. 十进制小数化为二进制小数的方法是什么_八进制转换成十进制,十进制转换成八进制...
  6. Linux ln命令、软链接和硬链接的区别
  7. 知识图谱最新权威综述论文解读:实体发现
  8. [西瓜书习题] 第二章 模型评估与选择
  9. 实例:从一个文件中读取销售记录,并合并生成销售报告,实现销售册数,总销售额,平均售价...
  10. (88)FPGA二分频设计,面试必问(十二)(第18天)
  11. AcWing 1208. 翻硬币
  12. flash相册制作软件模板_儿童照片相册模板 怎么制作炫酷视频相册
  13. Lesson 002 —— 网络七层模型
  14. java对象复制 忽略空值_优秀!高级Java都这样优雅处理空值
  15. linux下无法正常打开pdf文件的解决方法
  16. 如何免费编辑PDF文档?
  17. SpringBoot缓存管理
  18. unity, AnimatorCullingMode踩坑
  19. Java 本地内存 直接内存 元空间
  20. 【数据压缩】作业1-1:对浊音、清音、爆破音进行音频分析

热门文章

  1. 什么是企业数字化转型
  2. postfix-企业邮件服务器搭建完整版
  3. php聚丙烯酰胺,高分子聚丙烯酰胺
  4. react 画一个渐变圆弧(渐变,圆弧)
  5. win系统压缩/解压.tar.gz 文件的方法
  6. 小圣求职记A:腾讯篇
  7. elasticsearch 介绍、查询及使用(must、should)
  8. 小学生计算机教学辅助系统
  9. python鸢尾花分类svm测试集_使用SVM对鸢尾花分类
  10. 【模型训练】YOLOv7道路裂缝检测