代码拉取完成,页面将自动刷新
#WebHeadPicker #Web头像拾取器插件
在网上找了一段时间,总的来说,cropper比较好。本项目基于cropper,以及一些互联网资源。 您是否应该使用本项目?如果您需要把头像直接上传到阿里云OSS服务中,那么可以直接使用本项目。如果是上传到自己的应用服务器,也可以使用本项目,但是上传功能需要您自己配合后端实现。
这里提供的是java版本,需要其他语言的请移步阿里云官方文档。
注意:阿里云OSS要开启POST跨域支持
public JSONObject getOSSToken()
{
String endpoint = "oss-cn-shanghai.aliyuncs.com";
String accessId = "accessId ";
String accessKey = "accessKey ";
String bucket = "bucket ";
String dir = "picture/";
String host = "http://" + bucket + "." + endpoint;
OSSClient client = new OSSClient(endpoint, accessId, accessKey);
try {
long expireTime = 30;
long expireEndTime = System.currentTimeMillis() + expireTime * 1000;
Date expiration = new Date(expireEndTime);
PolicyConditions policyConds = new PolicyConditions();
policyConds.addConditionItem(PolicyConditions.COND_CONTENT_LENGTH_RANGE, 0, 1048576000);
policyConds.addConditionItem(MatchMode.StartWith, PolicyConditions.COND_KEY, dir);
String postPolicy = client.generatePostPolicy(expiration, policyConds);
byte[] binaryData = postPolicy.getBytes("utf-8");
String encodedPolicy = BinaryUtil.toBase64String(binaryData);
String postSignature = client.calculatePostSignature(postPolicy);
Map<String, String> respMap = new LinkedHashMap<String, String>();
respMap.put("accessid", accessId);
respMap.put("policy", encodedPolicy);
respMap.put("signature", postSignature);
//respMap.put("expire", formatISO8601Date(expiration));
respMap.put("dir", dir);
respMap.put("host", host);
respMap.put("expire", String.valueOf(expireEndTime / 1000));
JSONObject ja1 = JSONObject.fromObject(respMap);
return ja1;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
引入文件
//CSS
<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet">
<link href="cropper/cropper.min.css" rel="stylesheet">
<link href="headpicker/headpicker.css" rel="stylesheet">
//Js
<script src="cropper/cropper.min.js"></script>
<script src="headpicker/headpicker.js"></script>
<script src="bootstrap/js/bootstrap.min.js"></script>
Js脚本
var picker = $('#avatar-modal');//头像弹出层
//弹出层
$('#head').click(function (e) {
picker.modal('show');
});
var headpicker = new HeadPicker();
var options = {
aspectRatio:1,//图片比例
circular:true,//是否开启原型遮罩
guides:false,//是否显示虚线
accessApi:"http://192.168.1.102:8080/oss/access",//授权接口
host:"http://data.yueare.com/",//OSS访问地址,这里我绑定了自己的域名,可以直接使用阿里云提供的
maxFileSize:1024*1024*2,//设置文件的最大值
imageQuality:0.9,//设置图像的质量
fileChooseInput:$('#avatarInput'),//设置图片选择input
orignImgContainer:$('#orignImg'),//设置原始图像的img容器
previewImgContainers:$('.avatar-preview'),//设置预览图片的容器,支持多个容器
rotateBtns:$('.avatar-btns'),//设置图片旋转按钮
completeBtn:$('.avatar-save'),//设置保存按钮
clipboardListenerContainerID:"cp",//对一个容器设置剪贴板粘贴监听事件(可选)
//文件选择消息回调
picChooseCallBack:function (msg) {
alert(msg);
},
//授权消息回调
accessCallBack:function (msg) {
alert(msg);
},
//上传回调
uploadCallBack:function (msg,backImgurl) {
$('#head').attr('src',backImgurl);
picker.modal('hide');
}
};
headpicker.initHeadPicker(options);
headpicker.initHeadPicker(options);
初始化后,调用headpicker.getImgDataUrl();
var dataurl = headpicker.getImgDataUrl();
console.log(dataurl);
headpicker.initHeadPicker(options);
初始化后,调用headpicker.getImgBlob();
headpicker.getImgBlob(function(blob) {
console.log(blob);
});
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型