first commit
This commit is contained in:
298
WebRoot/jsp/user/userHeadPortrait.jsp
Normal file
298
WebRoot/jsp/user/userHeadPortrait.jsp
Normal file
@ -0,0 +1,298 @@
|
||||
<%@ page language="java" pageEncoding="UTF-8"%>
|
||||
<!-- cropper -->
|
||||
<link rel="stylesheet" href="<%=request.getContextPath()%>/plugins/cropper/dist/cropper.min.css"/>
|
||||
<script type="text/javascript" src="<%=request.getContextPath()%>/plugins/cropper/dist/cropper.min.js" charset="utf-8"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
$(function() {
|
||||
var console = window.console || { log: function () {} };
|
||||
var URL = window.URL || window.webkitURL;
|
||||
var $image = $('#image');
|
||||
//var $download = $('#download');
|
||||
//获取图片截取的位置
|
||||
var $dataX = $('#dataX');
|
||||
var $dataY = $('#dataY');
|
||||
var $dataHeight = $('#dataHeight');
|
||||
var $dataWidth = $('#dataWidth');
|
||||
var $dataRotate = $('#dataRotate');
|
||||
var $dataScaleX = $('#dataScaleX');
|
||||
var $dataScaleY = $('#dataScaleY');
|
||||
var options = {
|
||||
aspectRatio: 1 / 1, //裁剪框比例1:1
|
||||
preview: '.img-preview',
|
||||
viewMode:1,
|
||||
dragMode:'move',
|
||||
crop: function (e) {
|
||||
$dataX.val(Math.round(e.x));
|
||||
$dataY.val(Math.round(e.y));
|
||||
$dataHeight.val(Math.round(e.height));
|
||||
$dataWidth.val(Math.round(e.width));
|
||||
$dataRotate.val(e.rotate);
|
||||
$dataScaleX.val(e.scaleX);
|
||||
$dataScaleY.val(e.scaleY);
|
||||
}
|
||||
};
|
||||
var originalImageURL = $image.attr('src');
|
||||
var uploadedImageURL;
|
||||
|
||||
|
||||
// Tooltip
|
||||
$('[data-toggle="tooltip"]').tooltip();
|
||||
|
||||
|
||||
// Cropper
|
||||
$image.cropper(options);
|
||||
|
||||
|
||||
// Buttons
|
||||
if (!$.isFunction(document.createElement('canvas').getContext)) {
|
||||
$('button[data-method="getCroppedCanvas"]').prop('disabled', true);
|
||||
}
|
||||
|
||||
if (typeof document.createElement('cropper').style.transition === 'undefined') {
|
||||
$('button[data-method="rotate"]').prop('disabled', true);
|
||||
$('button[data-method="scale"]').prop('disabled', true);
|
||||
}
|
||||
|
||||
|
||||
// Options
|
||||
$('.docs-toggles').on('change', 'input', function () {
|
||||
var $this = $(this);
|
||||
var name = $this.attr('name');
|
||||
var type = $this.prop('type');
|
||||
var cropBoxData;
|
||||
var canvasData;
|
||||
|
||||
if (!$image.data('cropper')) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (type === 'checkbox') {
|
||||
options[name] = $this.prop('checked');
|
||||
cropBoxData = $image.cropper('getCropBoxData');
|
||||
canvasData = $image.cropper('getCanvasData');
|
||||
|
||||
options.ready = function () {
|
||||
$image.cropper('setCropBoxData', cropBoxData);
|
||||
$image.cropper('setCanvasData', canvasData);
|
||||
};
|
||||
} else if (type === 'radio') {
|
||||
options[name] = $this.val();
|
||||
}
|
||||
|
||||
$image.cropper('destroy').cropper(options);
|
||||
});
|
||||
|
||||
|
||||
// Methods
|
||||
// 点击开始计算图片位置,获取位置
|
||||
$('.docs-buttons').on('click', '[data-method]', function () {
|
||||
var $this = $(this);
|
||||
var data = $this.data();
|
||||
var $target;
|
||||
var result;
|
||||
|
||||
if ($this.prop('disabled') || $this.hasClass('disabled')) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($image.data('cropper') && data.method) {
|
||||
data = $.extend({}, data); // Clone a new one
|
||||
|
||||
if (typeof data.target !== 'undefined') {
|
||||
$target = $(data.target);
|
||||
|
||||
if (typeof data.option === 'undefined') {
|
||||
try {
|
||||
data.option = JSON.parse($target.val());
|
||||
} catch (e) {
|
||||
console.log(e.message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (data.method === 'rotate') {
|
||||
$image.cropper('clear');
|
||||
}
|
||||
|
||||
result = $image.cropper(data.method, data.option, data.secondOption);
|
||||
|
||||
if (data.method === 'rotate') {
|
||||
$image.cropper('crop');
|
||||
}
|
||||
|
||||
switch (data.method) {
|
||||
case 'scaleX':
|
||||
case 'scaleY':
|
||||
$(this).data('option', -data.option);
|
||||
break;
|
||||
|
||||
case 'getCroppedCanvas':
|
||||
//上传头像
|
||||
if (result) {
|
||||
var imgBase=result.toDataURL('image/jpeg');
|
||||
var data={imgBase:imgBase};
|
||||
$.post(ext.contextPath+ "/user/saveHeadPortrait.do",data,function(ret){
|
||||
if(ret==1){
|
||||
$('img[alt|="User Image"]').attr('src',imgBase); ;
|
||||
closeModal('userHeadPortraitModal');
|
||||
}else{
|
||||
showAlert('d','上传失败','headAlertDiv');
|
||||
}
|
||||
},'json');
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 'destroy':
|
||||
if (uploadedImageURL) {
|
||||
URL.revokeObjectURL(uploadedImageURL);
|
||||
uploadedImageURL = '';
|
||||
$image.attr('src', originalImageURL);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if ($.isPlainObject(result) && $target) {
|
||||
try {
|
||||
$target.val(JSON.stringify(result));
|
||||
} catch (e) {
|
||||
console.log(e.message);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// Keyboard
|
||||
$(document.body).on('keydown', function (e) {
|
||||
|
||||
if (!$image.data('cropper') || this.scrollTop > 300) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (e.which) {
|
||||
case 37:
|
||||
e.preventDefault();
|
||||
$image.cropper('move', -1, 0);
|
||||
break;
|
||||
|
||||
case 38:
|
||||
e.preventDefault();
|
||||
$image.cropper('move', 0, -1);
|
||||
break;
|
||||
|
||||
case 39:
|
||||
e.preventDefault();
|
||||
$image.cropper('move', 1, 0);
|
||||
break;
|
||||
|
||||
case 40:
|
||||
e.preventDefault();
|
||||
$image.cropper('move', 0, 1);
|
||||
break;
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
// Import image
|
||||
var $inputImage = $('#inputImage');
|
||||
|
||||
if (URL) {
|
||||
$inputImage.change(function () {
|
||||
var files = this.files;
|
||||
var file;
|
||||
|
||||
if (!$image.data('cropper')) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (files && files.length) {
|
||||
file = files[0];
|
||||
|
||||
if (/^image\/\w+$/.test(file.type)) {
|
||||
if (uploadedImageURL) {
|
||||
URL.revokeObjectURL(uploadedImageURL);
|
||||
}
|
||||
|
||||
uploadedImageURL = URL.createObjectURL(file);
|
||||
$image.cropper('destroy').attr('src', uploadedImageURL).cropper(options);
|
||||
$inputImage.val('');
|
||||
} else {
|
||||
showAlert('d','请选择图片文件','headAlertDiv');
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
$inputImage.prop('disabled', true).parent().addClass('disabled');
|
||||
}
|
||||
|
||||
})
|
||||
</script>
|
||||
<div class="modal fade" id="userHeadPortraitModal">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span></button>
|
||||
<h4 class="modal-title">上传头像</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<!-- 新增界面formid强制为subForm -->
|
||||
<div id="headAlertDiv"></div>
|
||||
<form class="form-horizontal" id="fileInputModalForm" style="padding:10px">
|
||||
<div class="row" style="margin-bottom: 10px">
|
||||
<div class="col-md-12">
|
||||
<!-- <h3>Demo:</h3> -->
|
||||
<div class="img-container">
|
||||
<img id="image" style="height:350px">
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div class="col-md-3">
|
||||
<h3>Preview:</h3>
|
||||
<div class="docs-preview clearfix">
|
||||
<div class="img-preview preview-sm" style="width:50px;height:50px"></div>
|
||||
</div>
|
||||
</div> -->
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-9 docs-buttons">
|
||||
<!-- <h3>Toolbar:</h3> -->
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn btn-primary" data-method="rotate" data-option="-90" title="左转90º">
|
||||
<i class="fa fa-rotate-left"></i>
|
||||
</button>
|
||||
<button type="button" class="btn btn-primary" data-method="rotate" data-option="90" title="右转90º">
|
||||
<i class="fa fa-rotate-right"></i>
|
||||
</button>
|
||||
<button type="button" class="btn btn-primary" data-method="reset" title="刷新">
|
||||
<i class="fa fa-refresh"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="btn-group">
|
||||
<label class="btn btn-danger btn-upload" for="inputImage" title="选择图片">
|
||||
<input type="file" class="sr-only" id="inputImage" name="file" accept="image/gif,image/jpg,image/jpeg,image/bmp,image/png,.jpg,.jpeg,.png,.gif,.bmp,.tiff">
|
||||
<i class="fa fa-file-picture-o"> 选择</i>
|
||||
</label>
|
||||
</div>
|
||||
<div class="btn-group btn-group-crop">
|
||||
<button class="btn btn-primary" data-method="getCroppedCanvas" data-option="{ "width": 180, "height": 90 }" type="button" title="上传">
|
||||
<i class="fa fa-upload"> 上传</i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /.modal-content -->
|
||||
</div>
|
||||
<!-- /.modal-dialog -->
|
||||
</div>
|
||||
Reference in New Issue
Block a user