★精品文档★
HTML5 Canvas实现图片缩放、翻转、颜色
渐变代码示例
这篇文章主要介绍了 HTML5 Canvas实现图片缩放、翻转、颜色渐变的代码示例,充分利用到了坐标的操作,说明都写在代码注释里了很简明,需要的朋友可以参考下
翻转、移动、平移、放大、缩小
XML/HTML Codevar canvas = document.getElementById(‘canvas’); if (canvas.getContext) {
var context = canvas.getContext(‘2d’);
//放大与缩小
context.beginPath();
context.strokeStyle = “#000000”;
context.strokeRect(10,10,150,100);
//放大3倍
context.scale(3,3);
context.beginPath();
context.strokeStyle = ‘#cccccc’ ;
1/9
★精品文档★
context.strokeRect(10,10,150,100)
//缩小
context.scale(0.5,0.5);
context.beginPath();
context.strokeStyle = ‘#cccccc’ ;
context.strokeRect(10,10,150,100)
//翻转
var img=new Image();
img.src=‘ images/1 .jpg’ ;
img.onload=function(){
context.drawImage(img,10,10);
context.scale(1 , -1);
context.drawImage(img,0, -500);
}
//平移
2/9
★精品文档★
context.beginPath();
context.strokeStyle = ‘#000000’ ;
context.strokeRect(10,101 ,150,100);
// x移动 50 y移动 100
context.translate(50,100);
context.beginPath();
context.strokeStyle = ‘#cccccc’ ;
context.strokeRect(10,10,150,100);
//旋转
context.beginPath();
context.strokeStyle = ‘#000000’ ;
context.strokeRect(200,50,100,50);
//默认旋转是根据0,0 中心使用translate可以按照自己的设置的中心旋转
context.translate(250,75);
3/9
★精品文档★
context.rotate(45 * Math.PI /180);
context.translate(-250, -75);
context.beginPath();
context.strokeStyle = ‘#cccccc’ ;
context.strokeRect(200,50,100,50);
// transform矩阵
context.beginPath();
context.strokeStyle = ‘#000000’ ;
context.strokeRect(10,10,150,100);
context.transform(3,0,0,3,0,0);
context.beginPath();
context.strokeStyle = ‘#cccccc’ ;
context.strokeRect(10,10,150,100);
4/9
★精品文档★
}
渐变、 图像组合效果、颜色翻转
XML/HTML Codevar canvas = document.getElementById(‘canvas’); if (canvas.getContext) {
var context = canvas.getContext(‘2d’);
//线性绘制渐变
var grd =context.createLinearGrad ient(0,0,200,100);
// postion必须是0.1-1 .0之间的竖直表示渐变中颜色的地点相对地位 color表示颜色
grd.addColorStop(0.1 , “#00ff00”);
grd.addColorStop(0.8, “#ff0000”);
context.fi l lStyle=grd;
context.fi l lRect(0,0, 200,100);
//径向渐变
5/9
★精品文档★
var grd =context.createRadialGradient(100,100,10,100,100,50);
grd.addColorStop(0.1 , “#00ff00”);
grd.addColorStop(0.8, ‘#ff0000’);
context.fi l lStyle=grd;
context.fi l lRect(0,0,200,200);
//图像组合效果
context.fi l lStyle = ‘#00ff00’ ;
context.fi l lRect(10,10,50,50);
//新绘图
//context.globalCompositeOperation =“source-over”;
//只绘制新内容删除其他所有内容
6/9
★精品文档★
context.globalCompositeOperation = ‘copy’ ;
//图形重叠的地方其颜色值相减后决定
context.globalCompositeOperation = ‘darker’ ;
//画布上已经有的内容只会载和其他图形重叠的地方保留
context.globalCompositeOperation =‘destination-atop’ ;
// 参 考http://www.w3school .com.cn/htmldom/prop_canvasrenderingcontext2d_globalcompositeoperation.asp
context.beginPath();
context.fi l lStyle = ‘#ff0000’ ;
context.arc(50,50,30,0, 2 *Math.PI);
context.fi l l();
7/9
★精品文档★
//颜色翻转
var img = new Image();
img.src = ‘ images/1 .jpg’ ;
img.onload =function(){
context.drawImage(img,0,0, 1 , 1);
var imgData =context.getImageData(0,0, 1 ,1);
var pixels =imgData.data;
console. log(pixels);
for(var i=0, n =pixels. length; i< n; i+=4) {
pixels[i]=255-pixels[i];
pixels[i+1]=255-pixels[i+1];
8/9
★精品文档★
pixels[i+2]=255-pixels[i+2];
}
context.putImageData(imgData, 250, 0);
}
}
9/9
虎跃科技怎么样?虎跃科技(虎跃云)是一家成立于2017年的国内专业服务商,专业主营云服务器和独立服务器(物理机)高防机房有着高端华为T级清洗能力,目前产品地区有:山东,江苏,浙江等多地区云服务器和独立服务器,今天虎跃云给大家带来了优惠活动,为了更好的促销,枣庄高防BGP服务器最高配置16核32G仅需550元/月,有需要的小伙伴可以来看看哦!产品可以支持24H无条件退款(活动产品退款请以活动规则为准...
LOCVPS发来了针对XEN架构VPS的促销方案,其中美国洛杉矶机房7折,其余日本/新加坡/中国香港等机房全部8折,优惠后日本/新加坡机房XEN VPS月付仅29.6元起。这是成立较久的一家国人VPS服务商,目前提供美国洛杉矶(MC/C3)、和中国香港(邦联、沙田电信、大埔)、日本(东京、大阪)、新加坡、德国和荷兰等机房VPS主机,基于XEN或者KVM虚拟架构,均选择国内访问线路不错的机房,适合建...
近日CloudCone发布了最新的补货消息,针对此前新年闪购年付便宜VPS云服务器计划方案进行了少量补货,KVM虚拟架构,美国洛杉矶CN2 GT线路,1Gbps带宽,最低3TB流量,仅需14美元/年,有需要国外便宜美国洛杉矶VPS云服务器的朋友可以尝试一下。CloudCone怎么样?CloudCone服务器好不好?CloudCone值不值得购买?CloudCone是一家成立于2017年的美国服务器...