<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>文字像素化</title>
<style>
canvas{
background-color: #fff;
margin: 0 auto;
display: block;
}
body{
background-color: #ccc;
}
input{
margin: 0 auto;
display: block;
}
</style>
</head>
<body>
<canvas id="can" height="500" width="500"></canvas>
<input type="button" value="文"><input type="button" value="字">
<script>
var canvas = document.getElementById('can');
var ctx = canvas.getContext('2d');
var aInput = document.getElementsByTagName('input');
for (var i = 0; i < aInput.length; i++) {
aInput[i].onclick = function () {
//获取文字
var str = this.value;
ctx.clearRect(0,0,canvas.width,canvas.height);
//设置样式
var h = 200;
ctx.font = h + 'px impact';
ctx.fillStyle = 'green';
ctx.textBaseline = 'top';
var w = ctx.measureText(str).width;
ctx.fillText(str,(canvas.width - w)/2,(canvas.height - h)/2);
//获取图像数据
var img = ctx.getImageData((canvas.width - w)/2,(canvas.height - h)/2,w,h);
//清空画布
ctx.clearRect(0,0,canvas.width,canvas.height);
var newImg = ctx.createImageData(w,h);
var ranArr = randomArr(w*h,w*h/10);
//设置新像素点数据
for (var i = 0; i < ranArr.length; i++) {
newImg.data[ranArr[i]*4] = img.data[ranArr[i]*4];
newImg.data[ranArr[i]*4+1] = img.data[ranArr[i]*4+1];
newImg.data[ranArr[i]*4+2] = img.data[ranArr[i]*4+2];
newImg.data[ranArr[i]*4+3] = img.data[ranArr[i]*4+3];
}
//设置新图像数据
ctx.putImageData(newImg,(canvas.width - w)/2,(canvas.height - h)/2);
}
}
//从一组数据中随机抽取一组数
function randomArr(all,part) {
var arr = [];
var result = [];
for (var i = 0; i < all; i++) {
arr.push(i);
}
for (var i = 0; i < part; i++) {
result.push(arr.splice(Math.floor(Math.random()*arr.length), 1));
}
return result;
}
</script>
</body>
</html>
可以看到,颜色设置为green
然而,在chrome 以及在firefox中显示为蓝色
这是出现了什么问题?怎么解决呢?有大神可以告诉我一下吗,谢谢
已解决= =
数据写错了