phpcms会员flash上传修改头像图片不能使用更换为cropper.js h5头像上传

phpcms基于cropper.js的图片上传和裁剪

项目中要求图片上传并裁剪的功能,之前也有接触过很多图片裁剪插件,效果体验不是很好,今天推荐一款好用的插件-cropper,超级好用,裁剪功能丰富,满足了各种需求。

网上有很多的理由cropper.js开发的h5图片上传,但是大都依赖bootstrap,需要引入他们的东西,感觉太重。另外由于phpcms v9后台修改flash上传为h5上传,唯独没有修改头像的上传,感觉不太完美,所以专门开发了一下h5头像上传,

目前是对接sso的上传,对于已经去掉sso的用户,升级资料正在整理中。

效果图:

付费内容阅读

(1)下载压缩包:[$]h5头像上传.zip,并解压
(2)找到cropper.min.css和ImgCropping.css放到statics/css/文件夹下,找到cropper.min.js放到statics/js/文件夹下
(3)找到phpcms/modules/member/index.php找到代码388行左右:

$upurl = base64_encode($phpsso_api_url.'/index.php?m=phpsso&c=index&a=uploadavatar&auth_data='.$auth_data);

改成:

$upurl = $phpsso_api_url.'/index.php?m=phpsso&c=index&a=uploadavatar&auth_data='.$auth_data;
$uid = $this->memberinfo['phpssouid'];

(4)找到phpsso_server/phpcms/modules/phpsso/index.php找到

public function uploadavatar() { 

把上传头像的方法上面几行 改成代码:

//根据用户id创建文件夹

 if(isset($this->data['uid']) && isset($this->data['avatardata'])) { 
$this->uid = intval($this->data['uid']); 
$this->avatardata = $this->data['avatardata']; 
} else {
exit('0');
}

改成:

$this->data = $_POST; 
//根据用户id创建文件夹 
 if(isset($this->data['uid']) && isset($this->data['avatardata'])) { 
$this->uid = intval($this->data['uid']); 
$this->avatardata = str_replace('data:image/jpeg;base64,''', $this->data['avatardata']); 
 $this->avatardata = base64_decode($this->avatardata); 
 } else { 
 exit('0'); 
}

(5)找到下载压缩包中的account_manage_avatar.html,如果你没有做过二开,直接去覆盖phpcms/templates/default/member/account_manage_avatar.html文件即可,具体修改代码为:(找到代码<div class=”content”>)

<script language="javascript" type="text/javascript" src="{$phpsso_api_url}/statics/js/swfobject.js"></script> 
<script type="text/javascript"
var flashvars = { 
'upurl':"{$upurl}&callback=return_avatar&" 
 };  
 var params = { 'align':'middle'
 'play':'true'
'loop':'false',
 'scale':'showall',
 'wmode':'window'
 'devicefont':'true'
 'id':'Main'
 'bgcolor':'#ffffff'
 'name':'Main''allowscriptaccess':'always' 
};  
var attributes = { 
 };  
 swfobject.embedSWF("{$phpsso_api_url}/statics/images/main.swf""myContent""490""434""9.0.0","{$phpsso_api_url}/statics/images/expressInstall.swf", flashvars, params, attributes); 
 function return_avatar(data) { 
 if(data == 1) { 
window.location.reload(); 
 } else { 
alert('failure'); 
 } 
 } 
</script>  
<ul class="col-right col-avatar" id="avatarlist"
 {loop $avatar $k $v} 
 <li> 
<img src="{$v}" height="{$k}" width="{$k}" onerror="this.src='{$phpsso_api_url}/statics/images/member/nophoto.gif'"><br /> 
 {L('avatar')}{$k} x {$k} 
</li> 
{/loop} 
</ul> 
<div class="col-auto"
<div id="myContent">  
<p>Alternative content</p>  
</div> 
</div> 

改成:

<link href="{CSS_PATH}table_form.css" rel="stylesheet" type="text/css" /> 
<link href="{CSS_PATH}cropper.min.css" rel="stylesheet" type="text/css" /> 
<link href="{CSS_PATH}ImgCropping.css" rel="stylesheet" type="text/css" /> 
<script language="javascript" type="text/javascript" src="{JS_PATH}cropper.min.js"></script> 
<div style="width: 320px;height: 320px;border: solid 1px #e2e2e2;padding: 5px;margin-top: 10px"> 
<!-- <img id="finalImg" src="" width="100%"> --> 
{loop $avatar $k $v} 
{if $k == 180} 
<img src="{$v}" alt="{$v}" id="finalImg" width="100%" onerror="this.src='{$phpsso_api_url}/statics/images/member/nophoto.gif'"> 
{/if} 
{/loop} 
</div> 
<button id="replaceImg" class="l-btn">点击上传图片</button>

另外在页面的最下边添加代码:(建议放到{template ‘member’, ‘footer’}前面)

<!--图片裁剪框 start--> 
<div style="display: none" class="tailoring-container"> 
<div class="black-cloth" onclick="closeTailor(this)"></div> 
<div class="tailoring-content"> 
<div class="tailoring-content-one"> 
<label title="上传图片" for="chooseImg" class="l-btn choose-btn"> 
<input type="file" accept="image/*" name="file" id="chooseImg" class="hidden" onchange="selectImg(this)"> 
选择图片 
</label> 
<div class="close-tailoring" onclick="closeTailor(this)">×</div> 
</div> 
<div class="tailoring-content-two"> 
<div class="tailoring-box-parcel"> 
<!-- <img id="tailoringImg"> --> 
{if $avatar} 
{loop $avatar $k $v} 
{if $k == 180} 
<img src="{$v}" alt="{$v}" id="tailoringImg" width="100%"> 
{/if} 
{/loop} 
{/if} 
</div> 
<div class="preview-box-parcel"> 
<p>图片预览:</p> 
<!-- <div class="square previewImg"></div> --> 
<div class="previewImg-box"> 
<div class="circular previewImg slg"></div> 
<p>180*180</p> 
</div> 
<div class="previewImg-box"> 
<div class="circular previewImg lg"></div> 
<p>90*90</p> 
</div> 
<div class="previewImg-box"> 
<div class="circular previewImg md"></div> 
<p>45*45</p> 
</div> 
<div class="previewImg-box"> 
<div class="circular previewImg sm"></div> 
<p>30*30</p> 
</div> 
</div> 
</div> 
<div class="tailoring-content-three"> 
<button class="l-btn cropper-reset-btn">复位</button> 
<button class="l-btn cropper-rotate-btn">旋转</button> 
<button class="l-btn cropper-scaleX-btn">换向</button> 
<button class="l-btn sureCut" id="sureCut">保存修改</button> 
</div> 
</div> 
</div> 
<!--图片裁剪框 end--> 
<script> 
//弹出框水平垂直居中 
(window.onresize = function () { 
var win_height = $(window).height(); 
var win_width = $(window).width(); 
if (win_width <= 768){ 
$(".tailoring-content").css({ 
"top": (win_height - $(".tailoring-content").outerHeight())/2, 
"left": 0 
}); 
}else{ 
$(".tailoring-content").css({ 
"top": (win_height - $(".tailoring-content").outerHeight())/2, 
"left": (win_width - $(".tailoring-content").outerWidth())/2 
}); 
} 
})(); 
//弹出图片裁剪框 
$("#replaceImg,#finalImg").on("click",function () { 
$(".tailoring-container").toggle(); 
}); 
//图像上传 
function selectImg(file) { 
if (!file.files || !file.files[0]){ 
return; 
} 
var reader = new FileReader(); 
reader.onload = function (evt) { 
var replaceSrc = evt.target.result; 
//更换cropper的图片 
$('#tailoringImg').cropper('replace', replaceSrc,false);//默认false,适应高度,不失真 
} 
reader.readAsDataURL(file.files[0]); 
} 
//cropper图片裁剪 
$('#tailoringImg').cropper({ 
aspectRatio: 1/1,//默认比例 
preview: '.previewImg',//预览视图 
guides: true, //裁剪框的虚线(九宫格) 
autoCropArea: 0.9, //0-1之间的数值,定义自动剪裁区域的大小,默认0.8 
movable: false, //是否允许移动图片 
dragCrop: true, //是否允许移除当前的剪裁框,并通过拖动来新建一个剪裁框区域 
movable: true, //是否允许移动剪裁框 
resizable: true, //是否允许改变裁剪框的大小 
zoomable: true, //是否允许缩放图片大小 
mouseWheelZoom: false, //是否允许通过鼠标滚轮来缩放图片 
touchDragZoom: true, //是否允许通过触摸移动来缩放图片 
rotatable: true, //是否允许旋转图片 
crop: function(e) { 
// 输出结果数据裁剪图像。 
} 
}); 
//旋转 
$(".cropper-rotate-btn").on("click",function () { 
$('#tailoringImg').cropper("rotate", 45); 
}); 
//复位 
$(".cropper-reset-btn").on("click",function () { 
$('#tailoringImg').cropper("reset"); 
}); 
//换向 
var flagX = true; 
$(".cropper-scaleX-btn").on("click",function () { 
if(flagX){ 
$('#tailoringImg').cropper("scaleX", -1); 
flagX = false; 
}else{ 
$('#tailoringImg').cropper("scaleX", 1); 
flagX = true; 
} 
flagX != flagX; 
}); 
//裁剪后的处理 
$("#sureCut").on("click",function () { 
if ($("#tailoringImg").attr("src") == null ){ 
return false; 
}else{ 
// $('#tailoringImg').cropper('setCanvasData',{width:620,height:400}); 
// $('#tailoringImg').cropper('setData',{width:620,height:400}); 
var cas = $('#tailoringImg').cropper('getCroppedCanvas', { 
width: 750, 
height: 750, 
});//获取被裁剪后的canvas 
//var base64url = cas.toDataURL('image/png'); //转换为base64地址形式 
var base64url = cas.toDataURL('image/jpeg', 0.8); 
$("#finalImg").prop("src",base64url);//显示为图片的形式 
//$("#idCardImage").val(base64url); 
imagesAjax(base64url); 
//关闭裁剪框 
closeTailor(); 
} 
}); 
//关闭裁剪框 
function closeTailor() { 
$(".tailoring-container").toggle(); 
} 
function imagesAjax(src) { 
var data = {}; 
data.avatardata = src; 
data.uid = "{$uid}"; 
$.ajax({ 
url: "{$upurl}", 
data: data, 
type: "POST", 
dataType: 'json', 
success: function(res) { 
console.log(res) 
} 
}); 
} 
</script>

[/$]

声明:
1,本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2,本站软件分享目的仅供大家学习和交流,请不要用于商业用途,下载后请于24小时后删除!
3,如果你也有好的源码或者教程,可以投稿到本站,分享有金币奖励和额外的收入!
4,本站提供的软件,源码,游戏,其他资源部不包含技术服务请大家谅解!
5,如有链接无法下载,请联系站长处理!
6,申明:本站资源出售只是赞助,仅用于本站服务器和日常运营所需!不提供任何技术支持。
7,如压缩包提示有密码,默认解压 密码为‘seo981.com’,如遇到无法解压的可以联系站长(seo81#qq.com注意:#改成@)!
特别声明:破解产品仅供参考学习,不提供技术支持,如有需求,建议购买正版!如果源码侵犯了您的利益请留言告知!!
SEO981 » phpcms会员flash上传修改头像图片不能使用更换为cropper.js h5头像上传

提供最优质的资源集合

立即查看 了解详情