HTML5之图像处理

--- 内嵌图像

- drawImage可以绘制图像
context.drawImage(image,dx,dy)
context.drawImage(image,dx,dy,dw,dh)
context.drawImage(image,sx,sy,sw,sh,dx,dy,dw,dh)

- 基本绘制 图片根据尺寸自动截取左上角

image.onload = function(){
  context.drawImage(image,0,0)
}

- 自动调整 调整图片加载尺寸

image.onload = function(){
  context.drawImage(image,0,0,600,400);
}

- 选择一部分区域贴到目标区域

image.onload = function(){
  context.drawImage(image,0,0);
  context.drawImage(image,620,300,300,375,390,10,200,250);
}

---- 绘制像素

- getImageData() // 获取一个Canvas的像素数组
- putImageData() // 将ImageData写入到Canvas中
- createImageData() // 创建一个ImageData

- ImageData对象

  context.filStyle = ‘navy‘;
  context.fillRect(0,0,1,1);
  context.fillStyle = ‘teal‘;
  context.fillRect(1,0,1,1);
  context.fillStyle = ‘lime‘;
  context.fillRect(0,1,1,1);
  context.fillStyle = ‘yellow‘;
  context.fillRect(1,1,1,1);

  ImageData = context.getImageData(0,0,canvas.width,canvas.heigt);
- ImageData.width    // 图像宽度
- ImageData.heigth    // 图像高度
- ImageData.data    // 图像信息
for(var i=0; i<ImageData.data.length; i+= 4)
  {
    var r = ImageData.data[i];
    var g = ImageData.data[i+1];
    var b = ImageData.data[i+2];
    var a = ImageData.data[i+3];
    alert(r+" "+g+" "+b+" "+a);
  }

---- 修改像素

- 使用putImageData回写

for (var i=0; i<ImageData.data.length; i+=4)
{
    ImageData.data[i] = parseInt(Math.random()*255);
    ImageData.data[i+1] = parseInt(Math.random()*255);
    ImageData.data[i+2] = parseInt(Math.random()*255);
}

context.putImageData(ImageData,dx,dy,[dirtyX,dirtY,dirtyWidth,dirtyHeight])

---- 创建ImageData

var imagedata = context.createImageData(2,2);

for(var i=0; i<ImageData.data.length; i+=4){
    imagedata.data[i] = parseInt(Math.random()*255);
    imagedata.data[i+1] = parseInt(Math.random()*255);
    imagedata.data[i+2] = parseInt(Math.random()*255);
}

context.putImageData(imagedata,0,0);

---- 操作像素

var image = new Image();
image.src = ‘images/yosemite.jpg‘;
image.onload =  function() {
    context.drawImage(image,0,0,360,240);
    var modified  = context.createImag eData(360,240);
    var imagedata = context.getImageData(0,0,360,240);
    for  (var i=0;  i<imagedata.data.length; i+=4)  {
        var rgba = grayLuminosity(
            imagedata.data[i+0],
            imagedata.data[i+1],
            imagedata.data[i+2],
            imagedata.data[i+3]
        );
        modified.data[i+0] = rgba[0];
        modified.data[i+1] = rgba[1];
        modified.data[i+2] = rgba[2];
        modified.data[i+3] = rgba[3];
    }
    context.putImageDa ta(modified,0,0);
};

----- 滤镜效果代码

var grayLightness = function(r,g,b,a) {
var val =  parseInt(
    (Math.max(r,g,b)+Math.min(r,g,b))*0.5
);
    return [val,val,val,a];
};

var grayLuminosity =  function(r,g,b,a) {
var val =  parseInt(
    (r*0.21)+(g*0.71)+(b*0.07)
);
    return [val,val,val,a];
};

var grayAverage = function(r,g,b,a) {
var val =  parseInt((r+g+b)/3.0
);
    return [val,val,val,a];
};

var sepiaTone = function(r,g,b,a) {
var rS = (r*0.393)+(g*0.769)+(b*0.189);
var gS = (r*0.349)+(g*0.686)+(b*0.168);
var bS = (r*0.272)+(g*0.534)+(b*0.131);
    return [
    (rS>255) ? 255  : parseInt(rS),
    (gS>255) ? 255  : parseInt(gS),
    (bS>255) ? 255  : parseInt(bS),a];
};

var invertColor = function(r,g,b,a) {
    return [
    (255‐r),
    (255‐g),
    (255‐b),a];
};

var swapChannels =  function(r,g,b,a,order)  {
var rgba = [r,g,b,a];
    return [
    rgba[order[0]],
    rgba[order[1]],
    rgba[order[2]],
    rgba[order[3]]];
};

var monoColor = function(r,g,b,a,color)  {
    return [
    color[0],
    color[1],
    color[2],
    255 ‐(parseInt((r+g+b)/3.0))];
};

----- 合成影像

- 当图形重叠时的绘制方法
context.globalCompositeOperation = ‘source-over‘;

属性:
source-over/source-in/source-out/source-atop
destination-over/destination-in/destination-out/destination-atop
lighter/copy/xor

----- Patterns 复用模式

- createPattern()类似于drawImage()
context.createPattern(image,repetition)

- 复用模式

var cvs =  document.createElement("CANVAS");
cvs.width = 20;
cvs.height =  20;
var ctx =  cvs.getContext(‘2d‘);
ctx.fillStyle = ‘lime‘;
ctx.fillRect(0,0,10,10);
ctx.fillRect(10,10,10,10);
ctx.fillStyle = ‘green‘;
ctx.fillRect(10,0,10,10);
ctx.fillRect(0,10,10,10);
context.fillStyle = context.createPattern(cvs,‘repeat‘);
context.fillRect(0,0,220,220);
时间: 2024-11-25 17:45:36

HTML5之图像处理的相关文章

HTML5图形图像处理技术研究

摘要:图形图像处理平台大部分是传统的C/S架构的桌面应用程序,维护困难,共享性差,而B/S架构的Web程序具有易维护.易共享的优点.本文研究了基于HTML5的Web图形图像处理技术,用HTML5实现了一个Web图形图像处理程序,并通过理论分析和实验得出:HTML5在Web图形图像处理上具有优势,存在基于HTML5实现Web处理图形图像的可能性. 关键词:HTML5:Web:Canvas:图形图像处理 引言 传统C/S架构的桌面图形图像处理程序,虽然处理速度较快,但由于界面和算法逻辑都集中在客户端

分享我收集的前端好资源:网址、文章、工具、框架、电子书

分享我收集的前端好资源:网址.文章.工具.框架.电子书 前言 开始全职前端开发已经9个月了,在这9个月中收集了一还自认为还不错的资源,整理在了一个小网站上(http://www.cnfeinfo.com/),现在分享出来,希望对各位前端攻城师有用. 如果看了本文后,觉得这些资源还不错,对你有所帮助,别忘了“推荐”一下哦,能帮到大家是我最大的动力,谢谢! 前端好网址 CSS3动画参考 提供CSS3的案例.动画手册和CSS3动画生成工具 张鑫旭-鑫空间-鑫生活 张鑫旭个人博客,主要为web前端方向的

基于HTML5的PACS--HTML5图像处理(7)实现客户端JS调整窗宽窗位

仅提供参考和学习,代码仅为了指明个思路,转载请注明出处. 要查看此系统更多的图像处理功能请参考: 区域医疗移动医疗影像解决方案--基于HTML5的PACS--HTML5图像处理 在此之前,此系统是结合DICOM的WADO标准,在浏览器里通过javascript操作返回的JPG图片.这种服务器端解析,客户端展现的方式,对实现图像的移动.缩放.旋转.测量等图像操作能够实现实时的交互.但这种方式存在着几个弊端: 1.获取图像上的CT值(钙化值)信息的时候,要频繁的和服务器进行交互. 2.调整图像的窗宽

区域医疗移动医疗影像解决方案--基于HTML5的PACS--HTML5图像处理【转】

基于HTML5的PACS--图像伪彩 摘要: 要查看此系统更多的图像处理功能请参考:区域医疗移动医疗影像解决方案--基于HTML5的PACS--HTML5图像处理套用句广告语:哪里不会点哪里,so easy妈妈再也不用担心我的学习了.本地有了DICOM像素,再也不用担心图像调窗,图像反色,图像伪彩等技术了.仅此记录下.上图展示下给种伪彩效果.1...阅读全文 posted @ 2014-06-18 21:43 破曉 阅读(599) | 评论 (0) 编辑 基于HTML5的PACS---JS调整窗

基于HTML5的PACS--HTML5图像处理

在此之前,此系统是结合DICOM的WADO标准,在浏览器里通过javascript操作返回的JPG图片.这种服务器端解析,客户端展现的方式,对实现图像的移动.缩放.旋转.测量等图像操作能够实现实时的交互.但这种方式存在着几个弊端: 1.获取图像上的CT值(钙化值)信息的时候,要频繁的和服务器进行交互. 2.调整图像的窗宽窗位或者对图像进行反色,也要和服务器进行频繁的交互. 3.对图像进行测量(长方形测量,椭圆测量等)只能获取到面值和周长的简单的信息,这对于医生的诊断没多大的用处,实际运用中需要知

HTML5实验室简介之Canvas图像处理(一)

作为一个前端,想必对HTML5都不陌生,特别是移动端,如今已经比较火了,捞金量远胜于PC端,与其说HTML5是一项Web新时代革命性的技术,不如说其是现代化Web应用的新理念:一方面结合JavaScript,前端的羽翼更加丰满:另一方面,跨终端将Web应用推向了一个新的高度:你看到的视觉将更加高端.大气.炫酷:你浏览时的交互体验将更加人性化:你的设备消耗大大降低,运行更流畅:总之,你会惊叹,同时你会很舒服!而这一切都是基于HTML5的! 作为一个小前端,才疏学浅,个人小站(花满楼:http://

HTML5标签canvas图像处理

摘要: canvas可以读取图片后,使用drawImage方法在画布内进行重绘.本文介绍canvas的图像处理 drawImage drawImage() 方法在画布上绘制图像.画布或视频.drawImage() 方法也能够绘制图像的某些部分,以及/或者增加或减少图像的尺寸. 语法 在画布上定位图像: context.drawImage(img,x,y); 在画布上定位图像,并规定图像的宽度和高度: context.drawImage(img,x,y,width,height); 剪切图像,并在

50个最受网友欢迎的HTML5资源下载列表

完整附件下载地址:http://down.51cto.com/data/413867 附件预览: HTML 5游戏源码精选(共含9个游戏源码) http://down.51cto.com/zt/227 15个HTML5入门经典资料合集 http://down.51cto.com/zt/553 HTML 5基础入门学习教程 http://down.51cto.com/zt/234 初学者必知的HTML5入门级技巧[技术文档]下载 http://down.51cto.com/data/297883

bobo腾讯开源web图像处理引擎:AlloyImage

AlloyImage是腾讯Web前端 AlloyTeam 近日推出了最新开源项目.一个基于HTML5技术,使用Javascript语言开发的Web的在线图像处理引擎 (简称AI),以及一个在线Web图像处理平台AlloyPhoto(简称AP).集成了一些方便快捷的图像处理API,您可以将它简单快捷的引用到您的Web网页中. AlloyImage主要使用html5的canvas技术,并在多图层(layer)处理方面做了创新性的尝试,不仅如此,在技术实现层面,其架构方便扩展,使用者可以很容易写出现一