给你的头像加上圣诞帽JS源码
测试地址: 给你的头像加上圣诞帽
<div class='body' id='uploadContainer'>
<small id='uploadText'>上传头像</small>
<input id='upload' type='file' onchange='viewer()' style='height: 10rem; width: 10rem; position: absolute; top: 0; left: 0; opacity: 0'>
</div>
<img id='export' alt='圣诞快乐' src='' />
<canvas id='cvs'></canvas>
<p id='tip' style='opacity: 0'>点击帽子调整位置和大小</p>
<div class='footer'>
<button id='change' onClick='changeHat()' style='display: none;'>换 一 顶</button>
<button id='exportBtn' onClick='exportFunc()'>生成头像</button>
</div>
<div style='display: none'>
<img id='img' src='' alt='' />
<img class='hide' id='hat0' src='./hat0.png' />
<img class='hide' id='hat1' src='./hat1.png' />
<img class='hide' id='hat2' src='./hat2.png' />
<img class='hide' id='hat3' src='./hat3.png' />
<img class='hide' id='hat4' src='./hat4.png' />
<img class='hide' id='hat5' src='./hat5.png' />
<img class='hide' id='hat6' src='./hat6.png' />
<img class='hide' id='hat7' src='./hat7.png' />
<img class='hide' id='hat8' src='./hat8.png' />
<img class='hide' id='hat9' src='./hat9.png' />
</div>
<script src="https://cdn.bootcss.com/fabric.js/2.0.0-rc.3/fabric.min.js"></script>
<script>
var cvs = document.getElementById("cvs");
var ctx = cvs.getContext("2d");
var exportImage = document.getElementById("export");
var img = document.getElementById("img");
var hat = "hat6";
var canvasFabric;
var hatInstance;
var screenWidth = window.screen.width < 500 ? window.screen.width: 300;
function viewer() {
var file = document.getElementById("upload").files[0];
console.log(file);
var reader = new FileReader;
if (file) {
reader.readAsDataURL(file);
reader.onload = function(e) {
img.src = reader.result;
img.onload = function() {
img2Cvs(img)
}
}
} else {
img.src = ""
}
}
function img2Cvs(img) {
cvs.width = img.width;
cvs.height = img.height;
cvs.style.display = "block";
canvasFabric = new fabric.Canvas("cvs", {
width: screenWidth,
height: screenWidth,
backgroundImage: new fabric.Image(img, {
scaleX: screenWidth / img.width,
scaleY: screenWidth / img.height
})
});
changeHat();
document.getElementById("uploadContainer").style.display = "none";
document.getElementById("uploadText").style.display = "none";
document.getElementById("upload").style.display = "none";
document.getElementById("change").style.display = "block";
document.getElementById("exportBtn").style.display = "block";
document.getElementById("tip").style.opacity = 1
}
function changeHat() {
document.getElementById(hat).style.display = "none";
var hats = document.getElementsByClassName("hide");
hat = "hat" + ( + hat.replace("hat", "") + 1) % hats.length;
var hatImage = document.getElementById(hat);
hatImage.style.display = "block";
if (hatInstance) {
canvasFabric.remove(hatInstance)
}
hatInstance = new fabric.Image(hatImage, {
top: 40,
left: screenWidth / 3,
scaleX: 100 / hatImage.width,
scaleY: 100 / hatImage.height,
cornerColor: "#0b3a42",
cornerStrokeColor: "#fff",
cornerStyle: "circle",
transparentCorners: false,
rotatingPointOffset: 30
});
hatInstance.setControlVisible("bl", false);
hatInstance.setControlVisible("tr", false);
hatInstance.setControlVisible("tl", false);
hatInstance.setControlVisible("mr", false);
hatInstance.setControlVisible("mt", false);
canvasFabric.add(hatInstance)
}
function exportFunc() {
document.getElementsByClassName("canvas-container")[0].style.display = "none";
document.getElementById("exportBtn").style.display = "none";
document.getElementById("tip").innerHTML = "长按图片保存或分享";
document.getElementById("change").style.display = "none";
cvs.style.display = "none";
exportImage.style.display = "block";
exportImage.src = canvasFabric.toDataURL({
width: screenWidth,
height: screenWidth
})
}
</script>
暂无评论