zoukankan      html  css  js  c++  java
  • [OHIF-Viewers]医疗数字阅片-医学影像-querySelector() 选择器语法-将画布(canvas)图像保存成本地图片的方法

    [OHIF-Viewers]医疗数字阅片-医学影像-querySelector() 选择器语法-将画布(canvas)图像保存成本地图片的方法

    将画布(canvas)图像保存成本地图片的方法

    使用HTML5画布技术,你可以在浏览器客户端用JavaScript绘制出各种美丽酷炫的图案,这些图案是不能直接保存的,本身也不是图片形式。

    幸运的是,画布(canvas)对象有一个非常有用的方法:toDataURL()。这个方法能把画布里的图案转变成base64编码格式的png,然后返回 Data URL数据。

    var strDataURI = oCanvas.toDataURL();
    // returns "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACt..."

    而且,如果你给toDataURL()传入mine类型的参数,你还可以将画布转变成其它格式的图片。

    var strDataURI = oCanvas.toDataURL("image/jpeg");
    // returns "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAA..."

    现在,有了 Data URL数据后,我们可将这些数据直接填充到<img> 元素里,或者我们可以直接从浏览器里下载它们。

    上面我提到的两个js包也就是封装了一些方便的方法:

    /*
     * Canvas2Image.saveAsXXXX = function(oCanvasElement, bReturnImgElement, iWidth, iHeight) { ... }
     */
    
    var oCanvas = document.getElementById("thecanvas");
    
    Canvas2Image.saveAsPNG(oCanvas);  // 这将会提示用户保存PNG图片
    
    Canvas2Image.saveAsJPEG(oCanvas); // 这将会提示用户保存JPG图片
    
    Canvas2Image.saveAsBMP(oCanvas);  // 这将会提示用户保存BMP图片
    
    
    // 返回一个包含PNG图片的<img>元素
    var oImgPNG = Canvas2Image.saveAsPNG(oCanvas, true);   
    
    // 返回一个包含JPG图片的<img>元素
    var oImgJPEG = Canvas2Image.saveAsJPEG(oCanvas, true); 
                                                           
    // 返回一个包含BMP图片的<img>元素
    var oImgBMP = Canvas2Image.saveAsBMP(oCanvas, true); 
    
    
    // 这些函数都可以接受高度和宽度的参数
    // 可以用来调整图片大小
    
    // 把画布保存成100x100的png格式
    Canvas2Image.saveAsPNG(oCanvas, false, 100, 100);

    你也许注意到了saveAsBMP这个函数,实际上没有浏览器直接支持转化成BMP格式,但我们可以借用getImageData()方法实现对它的支持,这个方法提供给我们从画布里直接读取原始像素的功能。

    有了这些数据,我们可以构造出BMP格式图片(这种格式非常的简单)。

    对于大个的图片,转化成BMP格式会需要几秒钟的时间,但小图片就非常的快了,不会有延迟的感觉。

    OHIF图片下载按钮改写为直接下载图片:

     事件》CornerstoneViewportDownloadForm.js》ViewportDownloadForm.js

    采用绝对定位

    document.querySelector("#root > div.FlexboxLayout > div.main-content > div > div > div > div > div.viewport-element > canvas").toDataURL();

    采用class定位

    document.querySelector(".cornerstone-canvas").toDataURL();

    querySelector() 选择器语法

    原文地址:https://www.cnblogs.com/HavenLau/p/10476508.html

    选择器示例示例说明CSS
    .class .intro 选择所有class="intro"的元素 1
    #id #firstname 选择所有id="firstname"的元素 1
    * * 选择所有元素 2
    element p 选择所有<p>元素 1
    element,element div,p 选择所有<div>元素和<p>元素 1
    element element div p 选择<div>元素内的所有<p>元素 1
    element>element div>p 选择所有父级是 <div> 元素的 <p> 元素 2
    element+element div+p 选择所有紧接着<div>元素之后的<p>元素 2
    [attribute] [target] 选择所有带有target属性元素 2
    [attribute=value] [target=-blank] 选择所有使用target="-blank"的元素 2
    [attribute~=value] [title~=flower] 选择标题属性包含单词"flower"的所有元素 2
    [attribute|=language] [lang|=en] 选择 lang 属性以 en 为开头的所有元素 2
    :link a:link 选择所有未访问链接 1
    :visited a:visited 选择所有访问过的链接 1
    :active a:active 选择活动链接 1
    :hover a:hover 选择鼠标在链接上面时 1
    :focus input:focus 选择具有焦点的输入元素 2
    :first-letter p:first-letter 选择每一个<P>元素的第一个字母 1
    :first-line p:first-line 选择每一个<P>元素的第一行 1
    :first-child p:first-child 指定只有当<p>元素是其父级的第一个子级的样式。 2
    :before p:before 在每个<p>元素之前插入内容 2
    :after p:after 在每个<p>元素之后插入内容 2
    :lang(language) p:lang(it) 选择一个lang属性的起始值="it"的所有<p>元素 2
    element1~element2 p~ul 选择p元素之后的每一个ul元素 3
    [attribute^=value] a[src^="https"] 选择每一个src属性的值以"https"开头的元素 3
    [attribute$=value] a[src$=".pdf"] 选择每一个src属性的值以".pdf"结尾的元素 3
    [attribute*=value] a[src*="runoob"] 选择每一个src属性的值包含子字符串"runoob"的元素 3
    :first-of-type p:first-of-type 选择每个p元素是其父级的第一个p元素 3
    :last-of-type p:last-of-type 选择每个p元素是其父级的最后一个p元素 3
    :only-of-type p:only-of-type 选择每个p元素是其父级的唯一p元素 3
    :only-child p:only-child 选择每个p元素是其父级的唯一子元素 3
    :nth-child(n) p:nth-child(2) 选择每个p元素是其父级的第二个子元素 3
    :nth-last-child(n) p:nth-last-child(2) 选择每个p元素的是其父级的第二个子元素,从最后一个子项计数 3
    :nth-of-type(n) p:nth-of-type(2) 选择每个p元素是其父级的第二个p元素 3
    :nth-last-of-type(n) p:nth-last-of-type(2) 选择每个p元素的是其父级的第二个p元素,从最后一个子项计数 3
    :last-child p:last-child 选择每个p元素是其父级的最后一个子级。 3
    :root :root 选择文档的根元素 3
    :empty p:empty 选择每个没有任何子级的p元素(包括文本节点) 3
    :target #news:target 选择当前活动的#news元素(包含该锚名称的点击的URL) 3
    :enabled input:enabled 选择每一个已启用的输入元素 3
    :disabled input:disabled 选择每一个禁用的输入元素 3
    :checked input:checked 选择每个选中的输入元素 3
    :not(selector) :not(p) 选择每个并非p元素的元素 3
    ::selection ::selection 匹配元素中被用户选中或处于高亮状态的部分 3
    :out-of-range :out-of-range 匹配值在指定区间之外的input元素 3
    :in-range :in-range 匹配值在指定区间之内的input元素 3
    :read-write :read-write 用于匹配可读及可写的元素 3
    :read-only :read-only 用于匹配设置 "readonly"(只读) 属性的元素 3
    :optional :optional 用于匹配可选的输入元素 3
    :required :required 用于匹配设置了 "required" 属性的元素 3
    :valid :valid 用于匹配输入值为合法的元素 3
    :invalid :invalid 用于匹配输入值为非法的元素 3
  • 相关阅读:
    VS2010/MFC编程入门之四十九(图形图像:CDC类及其屏幕绘图函数)
    VS2010/MFC编程入门之四十八(字体和文本输出:文本输出)
    VS2010/MFC编程入门之四十七(字体和文本输出:CFont字体类)
    VS2010/MFC编程入门之四十六(MFC常用类:MFC异常处理)
    VS2010/MFC编程入门之四十五(MFC常用类:CFile文件操作类)
    VS2010/MFC编程入门之四十四(MFC常用类:定时器Timer)
    VS2010/MFC编程入门之四十三(MFC常用类:CTime类和CTimeSpan类)
    spring cloud深入学习(二)-----服务注册中心spring cloud eureka
    spring cloud深入学习(一)-----什么是微服务?什么是rpc?spring cloud简介
    spring深入学习(六)-----springmvc
  • 原文地址:https://www.cnblogs.com/landv/p/13273875.html
Copyright © 2011-2022 走看看