精华内容
下载资源
问答
  • 案例:下图 1 为原始表格,如何制作出下图 2 的四象限图?制作步骤:1. 制作四象限图需要用到散点图,散点图有别于其他图表做法是:不需要选择标题行或列,仅选择数据项选择菜单栏的“插入”-->“散点图”-->...

    今天教大家制作四象限图。

    案例:

    下图 1 为原始表格,如何制作出下图 2 的四象限图?

    2b1dde875b1a871c929fe9f84e375e96.png
    9e318ccaf775b1adfd93745048ceb260.png

    制作步骤:

    1. 制作四象限图需要用到散点图,散点图有别于其他图表做法是:不需要选择标题行或列,仅选择数据项

    选择菜单栏的“插入”-->“散点图”-->“仅带数据标记的散点图”

    1893c721a2f86c309e22fff406bbf3af.png

    2. 数据表中会出现以下初始散点图

    9f3df71a0c962c70179363fba8e5fd01.png

    3. 删除网格线和图例:

    67f13c11268261846c158e52c62adc81.png

    4. 现在开始设置坐标轴:选中纵坐标轴 --> 右键单击 --> 选择“设置坐标轴格式”

    19c24cfd9c6e594090d6b8e82e556c99.png

    5. 在弹出的对话框中选择“坐标轴选项”--> 选择“坐标轴值”单选钮,并填入“80”--> 关闭:

    表示 80 分为上下象限的分界线

    dd52a210df6bbb75c2c55fcfa822aa4b.png

    6. 这是设置好的效果:

    b591f6825179ac2bba0e217be5fd32c2.png

    7. 现在设置左右象限:选中横坐标轴 --> 右键单击 --> 选择“设置坐标轴格式”

    55786087684ff7948e73d2a3907f163e.png

    8. 在弹出的对话框中选择“坐标轴选项”--> 选择“坐标轴值”单选钮,并填入“6”--> 关闭:

    表示 6 小时为左右象限的分界线

    ecfc10a811e4c4c2f52d111d674f6d84.png

    9. 现在四个象限都已经设置好了:

    24c7736fe7c7aea6c52aa252f98a13aa.png

    10. 接下来调整坐标轴格式:选中横坐标轴 --> 右键单击 --> 选择“设置坐标轴格式”

    c650b8755beda2bc45494129a8ca8758.png

    11. 在弹出的对话框中选择“线型”-->在“后端类型”中选择箭头

    e83fcd50891a7f9eb8a377116f945e70.png

    12. 然后选择“坐标轴选项”--> 将“主要刻度线类型”设置为“无”--> 关闭

    09b352e020b0799be51174e4cc4b72c7.png

    13. 按同样的方式设置纵坐标轴,这是设置好的效果:

    893ca162856a68edbffb028571e2c79b.png

    14. 现在分别给纵横轴添加标题:选中图表区域 --> 选择菜单栏的“布局”-->“坐标轴标题”-->“主要横坐标轴标题”-->“坐标轴下方标题”

    0e98d86df9b756b860902dc40220acf6.png

    15. 图表上就会出现如下默认标题:

    23434de2890192c71a102e2e71ff3a72.png

    16. 用同样的方法添加纵坐标轴标题:选中图表区域 --> 选择菜单栏的“布局”-->“坐标轴标题”-->“主要纵坐标轴标题”-->“竖排标题”

    b4e6ff0a330d259c7ac9f5d846c3bc22.png

    17. 效果如下:

    3372642b99d3448430f0d019b512ace7.png

    18. 更改坐标轴的文本内容,并将其拖动到合适区域:

    6ce210c17d5ea2299a15032acc2c91b9.png

    19. 插入 4 个文本框,分别输入四个象限的名称,按需设置字体和颜色,拖动到合适区域:

    82f2896454559b7b7919787be7abde99.png

    20. 现在美化一下数据系列:选中数据系列 --> 右键单击 --> 选择“设置数据系列格式”

    cb2f5cc70c5afa454dfe8956e221c3ef.png

    21. 在弹出的对话框中选择“数据标记选项”-->“内置”-->“类型”选择喜欢的图形:

    5b8f3419e898f641306889efc5e401e3.png

    22. 选择“数据标记填充”-->“纯色填充”--> 在“颜色”中选择喜欢的颜色 --> 关闭:

    b185b1615038753161d55aa72fe0439b.png

    23. 现在,四象限图就制作好了,本例为了鼓励后进同学,我们不添加人名

    9e318ccaf775b1adfd93745048ceb260.png

    24. 如果需要添加人名,可以选中数据系列 --> 右键单击 --> 选择“添加数据标签”--> 然后选中数据标签 --> 右键单击 --> 选择“设置数据标签格式”--> 在弹出的对话框中取消勾选“Y 值”,勾选“单元格中的值”--> 点击“选择范围”--> 然后选择姓名区域即可:

    d04fbb2bd7a186a899a2593c0ccb523f.png
    展开全文
  • 机器A 有两张网卡 1 2 ; 机器B 有两张网卡 3 4;当AB通信时, 如何建立一条专用数据通道(假设由机器A 网卡1 和 机器B 网卡3组成的网络通道)????
  • 利用deeplearning对图像处理,必须把图像转化为张量,每一张图片由有三维张量组成,三维分别是[depth、height、width],直观来讲,就是用三个矩阵堆叠起来,每一个矩阵代表一个通道,如下图。有时候需要对图片进行...

    一、导读

        众所周知图像是有红绿蓝三种颜色堆叠而成,利用deeplearning对图像处理,必须把图像转化为张量,每一张图片由有三维张量组成,三维分别是[depth、height、width],直观来讲,就是用三个矩阵堆叠起来,每一个矩阵代表一个通道,如下图。有时候需要对图片进行旋转、缩放、裁剪、缩小填充等等复杂的操作,没有一个好用的工具,整个操作过程是非常繁琐的。今天我们就来聊一聊DL4J的datavec对图像的处理。

                                         8c501aac9495424f8b565722671ab986.jpg

    二、datavec-data-image代码架构

        datavec-data-image是dl4j基于opencv封装的图像处理库,可以非常方便的把图片处理为张量。代码分三个重要部分,loader(图片加载器)、transform(转化器)。

        1、loader:图片加载器,主要用于将图片加载并转化为张量。整个类结构如下图

    2f44afe9942475e1693435acb93905e07eb.jpg

     

    2、transform转化器,主要用于对图片张量的旋转、缩放、裁剪等操作,这里列出几个比较重要的转化器。

        ResizeImageTransform:缩放图片

        FlipImageTransform:翻转图片,例如上线左右颠倒

        CropImageTransform:裁剪图片

        BoxImageTransform:将图片固定到一个固定大小,如果图片大于该范围,则裁剪,如果小于该范围,则用0填充

        PipelineImageTransform:链式转化器,可以把图像经过一个流水线进行处理,例如:先缩放、在旋转、在翻转等等

        RotateImageTransform:旋转图片,例如旋转30、60等角度

    三、代码示例

        1、NativeImageLoader读取图片,转为4维张量,这里之所以是四维,是因为加了minibatch维,如果只读取一张图片,minibatch维度为1

    NativeImageLoader originalLoad = new NativeImageLoader(112, 112, 3);
    INDArray image = loader.asMatrix(new File("/root/1.jpg"));

        2、上下左右颠倒

     NativeImageLoader Labelloader = new NativeImageLoader(112, 112, 3,new FlipImageTransform(-1));//上下,左右颠倒

        3、缩放图片

    NativeImageLoader smallLoader = new NativeImageLoader(112, 112, 3, new ResizeImageTransform(80, 80));
    

        4、旋转图片,60度、90度、120度

    NativeImageLoader loader60 = new NativeImageLoader(112, 112, 3,new RotateImageTransform(60)); 
    NativeImageLoader loader90 = new NativeImageLoader(112, 112, 3,new RotateImageTransform(90)); 
    NativeImageLoader loader120 = new NativeImageLoader(112, 112, 3,new RotateImageTransform(120));

        5、链式处理,先旋转60度,在固定到224*224的中心

    NativeImageLoader pipeline = new NativeImageLoader(112, 112, 3,new PipelineImageTransform(new RotateImageTransform(60),new BoxImageTransform(224,224))  );
    		

     

    快乐源于分享。

       此博客乃作者原创, 转载请注明出处

    展开全文
  • 图像是由rgb三个通道以及在每个像素上定义的颜色组成的。但是在他们之上还有第四个通道,alpha通道,通过亮度定义每个像素上的透明度。白色意味着不透明,黑色意味着透明,介于黑白之间的灰色表示半透明。你可以看到...

    Css遮罩是2008年4月由苹果公司添加到webkit引擎中的。遮罩提供一种基于像素级别的,可以控制元素透明度的能力,类似于png24位或png32位中的alpha透明通道的效果。

    CSS遮罩——如何在CSS中使用遮罩

    图像是由rgb三个通道以及在每个像素上定义的颜色组成的。但是在他们之上还有第四个通道,alpha通道,通过亮度定义每个像素上的透明度。白色意味着不透明,黑色意味着透明,介于黑白之间的灰色表示半透明。你可以看到下面的图片

    CSS遮罩——如何在CSS中使用遮罩

    给一个html元素使用css遮罩,就会这样处理。不用给图片应用一个alpha通道,只需要给一个图片运用一个-webkit-mask-image的css属性。例如:-webkit-mask-image: url(mouse.png);他从图片遮罩里读出图片的透明信息,然后应用到html元素上,就像下面显示的图片

    CSS遮罩——如何在CSS中使用遮罩

    遮罩可以让头像按照特定形状显示。

    这么做有什么好处呢?遮罩可以使得图片按照任意的形状显示。或者你可能有很长的文本需要滚动显示,那么可以使用遮罩让他从不透明到透明的渐变显示。

    CSS遮罩——如何在CSS中使用遮罩

    你也可以用background-image属性,或是css的渐变属性,代替一个实际的位图,代码示例如下:

    -webkit-mask-image: -webkit-linear-gradient(top, rgba(0,0,0,1), rgba(0,0,0,0));	
    

    注意:这种旧的语法很快被新语法linear-gradient(to bottom, rgba(0,0,0,1), rgba(0,0,0,0))取代(目标关键字改变成to bottom)。LennartSchoors有一篇关于这个问题的短文

    当苹果把css遮罩带给webkit时,未能将他的实现细节和文件与w3c达成一致。所以意味着,如果其他供应商想要实现遮罩效果,他们就不得不首先反向编译,找出所有的实现细节。这种工作没有人愿意做。所以直到几天前,2012年11月15号,遮罩第一次出现在w3c公布的草案中。但是跟苹果公司的是不同的版本。

    好消息是:其他浏览器有类似功能,用不同的实现方式实现webkit属性中的css遮罩。

    模拟一个简单-webkit-mask-image的跨浏览器遮罩效果

    我们可以让html元素如下图显示成米老鼠头像的样子:

    CSS遮罩——如何在CSS中使用遮罩

    CSS遮罩——如何在CSS中使用遮罩

    我们让html使用webkit专有的css遮罩效果:

    <div class="element">
      <p>Lorem ipsum dolor sit … amet.</p>
    </div>	
    

    定义如下样式:

    .element {
      width: 400px;
      height: 300px;
      overflow: hidden;
      color: #fff;
      background: url(background.png);
      -webkit-mask-image: url(mouse.png);
    }	
    

    现代浏览器

    我们看一下现代浏览器,支持html技术的浏览器,可以在html内部解析svg,像这样:

    <!DOCTYPE html>
    <html>
    <body>
      <svg width="300px" height="300px">
        <circle cx="125" cy="150" r="50" fill="pink" stroke="green" stroke-width="5" />
      </svg>
    </body>
    </html>	
    

    最重要的是webkit也跟firefox和opera一样,提供一个相反的操作:就是把xthml嵌入到svg里,多亏svg1.1的扩展特性和<foreignObject>元素

    <?xml version="1.0" standalone="yes"?>
    <svg width="400px" height="300px" version="1.1" xmlns="http://www.w3.org/2000/svg">
      <foreignObject width="400px" height="300px">
    
        <!-- HTML begin -->
        <div class="element">
          <p>Lorem ipsum dolor sit … amet.</p>
        </div>
        <!-- HTML end -->
    
      </foreignObject>
    </svg>	
    

    Ie9和ie10是唯一现代浏览器不支持<foreignObject>元素的,我们将在后面讨论ie的问题。

    内联的svg和<foreignObject>元素可以在svg包装器里面附上页面的一部分html代码,这样就可以让html块呈现成我们想要的遮罩样子

    CSS遮罩——如何在CSS中使用遮罩

    <!DOCTYPE html>
    <html>
    <head>
      <style>
        .element {
          width: 400px;
          height: 300px;
          overflow: hidden;
          color: #fff;
          background: url(background.png);
          -webkit-mask-image: url(mouse.png);
        }
      </style>
    </head>
    <body>
    
      <!-- SVG wrapper begins -->
      <svg>
        <foreignObject width="400px" height="300px">
    
          <!-- inner HTML begins -->
          <div class="element">
            <p>Lorem ipsum dolor sit … amet.</p>
          </div>
          <!-- inner HTML ends -->
    
        </foreignObject>
      </svg>
      <!-- SVG wrapper ends -->
    
    </body>
    </html>	
    

    下一步是在svg里面定义svg遮罩,我们可以定义遮罩图片,然后通过style="mask:[mask id]"应用到内嵌的html或是foreignObject上

    <!DOCTYPE html>
    <html>
    <body>
    
      <!-- SVG begins -->
      <svg>
    
        <!-- Definition of a mask begins -->
        <defs>
          <mask id="mask" maskUnits="userSpaceOnUse" maskContentUnits="userSpaceOnUse">
            <image width="400px" height="300px" xlink:href="mouse.png"></image>
          </mask>
        </defs>
        <!-- Definition of a mask ends -->
    
        <foreignObject width="400px" height="300px" style="mask: url(#mask);">
    
          <!-- HTML begins -->
          <div class="element">
            <p>Lorem ipsum dolor sit … amet.</p>
          </div>
          <!-- HTML ends -->
    
        </foreignObject>
      </svg>
      <!-- SVG ends -->
    
    </body>
    </html>	
    

    最后,我们需要一个合适的遮罩图片。我们不能简单的使用webkit中属性css遮罩图片,因为svg遮罩认得亮度值而不认得透明值。所以我们需要把所有的不透明图片转换成不同深浅的白色。

    在ps里操作很简单:

    1.  打开你想要作为遮罩的透明png24的图片
    2.  选择图层菜单,然后图层样式最后是颜色叠加
    3.  在颜色叠加对话框里面改变颜色值为白色
    4.  点击ok关闭对话框
    5.  选择文件菜单,保存为web,替换旧的图片

    遮罩html的内容在webkit,firefox和opera都效果不错,很棒!

    CSS遮罩——如何在CSS中使用遮罩

    IE浏览器

    IE8以及其以下的浏览器不支持svg标签。他们将会标记为未知元素。把他们当做是普通html代码来渲染页面。

    <!DOCTYPE html>
    <html>
    <body>
      <svg></svg>
      <defs></defs>
      <mask id="mask" maskUnits="userSpaceOnUse" maskContentUnits="userSpaceOnUse"></mask>
      <image width="400px" height="300px" xlink:href="mouse.png"/></image>
      </mask><//mask>
      </defs><//defs>
      <foreignObject width="400px" height="300px" style="mask: url(#mask);"></foreignObject>
    
      <div class="element">
        <p>Lorem ipsum dolor sit … amet.</p>
      </div>
    
      </foreignObject><//foreignObject>
      </svg><//svg>
    </body>
    </html>	
    

    这个很cool,因为它实际是一个自动优雅降级。

    Ie9和ie10有一个问题。他们都识别svg,但是都不知道<foreignObject>元素。他们渲染svg,但是把它作为<foreignObject>的一部分,而<foreignObject>是无效svg标签。所以这部分就跟svg一起失效啦。意思是:我们的内容是迷惑我们的读者,所以整个去掉。这样不好。

    我们考虑可以用条件注释在ie里面隐藏svg部分,但是微软决定在ie10里去掉条件注释。所以目前还没有解决办法。

    唯一的解决办法是

    •  用支持svg扩展和<foreignObject>元素的客户端测试;
    •  用js渲染svg片段支持svg扩展。

    这段js是我们需要的,把它加到页面的头部

    function head () {
      if (window.SVGForeignObjectElement) {
        document.write('\
          <svg width="400px" height="300px">\
            <defs>\
              <mask id="mask" maskUnits="userSpaceOnUse" maskContentUnits="userSpaceOnUse">\
                <image width="400px" height="300px" xlink:href="mouse.png"/>\
              </mask>\
            </defs>\
            <foreignObject width="100%" height="100%" style="mask: url(#mask);">\
        ');
      }
    }
    function foot () {
      if (window.SVGForeignObjectElement) {
        document.write('\
            </foreignObject>\
          </svg>\
        ');
      }
    }	
    

    在我们的html结构中需要调用这些js函数替换原来的svg部分

    <body>
      <script>head();</script>
      <div class="element">
        <p>Lorem ipsum dolor sit … amet.</p>
      </div>
      <script>foot();</script>
    </body>	
    

    现在内容在所有的ie浏览器将保持一致。IE11应该支持<foreignObject>,我们拭目以待吧。

    注1:你看到在每行最后字符串内部的反斜杠,容许多行字符串。他们得到每个浏览器和官方ecmascript5标准的支持。

    注2:document.write是最好的js实践吗?那是个疯子,那为什么还使用他?凡事没有绝对的对错,完全依赖于使用的环境。如果你在外部js文件利用document.write,是个很糟糕的事情。document.write迫使在html中预加载的地方嵌入外部脚步文件,同时阻止他们尝试任何异步加载。这意味着如果这些外部脚步加载失败,你的页面就会戛然而止。但是我们在这里不处理外部文件,你应该把它放到一边。没有阻塞。另外,由于javascript拥有输出额外标签到屏幕,当html解析器运行中,你不会成为短暂的CSS样式失效的目击者

    什么是FOUC?

    flash of unstyled content (FOUC) 它指的是在某些情况下,IE在加载网页时会出现短暂的CSS样式失效。

    什么是FOUC(文档样式短暂失效)?

    如果使用import方法对CSS进行导入,会导致某些页面在Windows 下的Internet Explorer出现一些奇怪的现象:以无样式显示页面内容的瞬间闪烁,这种现象称之为文档样式短暂失效(Flash of Unstyled Content),简称为FOUC.

    1.  Flash of Unstyled Content (FOUC)
    2.  什么是FOUC?如何避免FOUC?
    3.  FOUC - Flash Of Unstyled Content 文档样式闪烁

    ——译者:D姐

    我们到这里很高兴也可以就此打住了。但是如何让ie也支持css遮罩呢?那么,我们走。。。

    Ie4-9有一个叫做Chroma的过滤器。它类似与电影拍摄中用的视频混合技术:就是透过一定颜色然后让元素同色的部分从屏幕上消失。这种颜色因此叫做颜色遮罩

    下面的css代码会让元素上的所有青色部分消失

    filter: progid:DXImageTransform.Microsoft.Chroma(color='cyan');
    zoom: 1; /* Needed in IE < 8 */	
    

    为什么是青色?这里仅仅是个建议。你可以使用任何颜色,作为你想要的遮罩颜色,而不是必须是青色。但是这个颜色必须是一个单独的,没有用到其他地方的颜色。所以跟内容混合的颜色不应该作为遮罩颜色。

    现在,有个更有意思的事情,chroma过滤器事实上不仅仅会过滤元素本身的颜色,还会过滤他孩子元素的颜色。因为应用下面的样式会创建一个10px宽的框。

    .parent {
      width: 120px;
      background-color: #eee;
      filter: progid:DXImageTransform.Microsoft.Chroma(color='cyan');
      zoom: 1;
    }
    .child {
      height: 100px;
      margin: 10px;
      background-color: cyan;
    }	
    

    对应的标记:

    <div class="parent">
      <div class="child"></div>
    </div>	
    

    CSS遮罩——如何在CSS中使用遮罩

    青色区域的子元素会过滤父元素,我们将会透过青色区域它看父元素。

    还是回到我们的米老鼠头像的例子,我们需要做的是创建一个米老鼠头像形状的图片,这个图片需要外部是青色的,里面的形状是透明的,如图所示。

    CSS遮罩——如何在CSS中使用遮罩

    在photoshop中需要做下面的事情:

    1.  打开现有的svg遮罩的png图片
    2.  按住ctrl键或是cmd (mac中),点击图层面板中的图层0
    3.  按下Backspace或del键移除白色部分
    4.  从选择菜单中选择反相
    5.  点击前景色,把他颜色值改为#00FFFF (RGB: 0,255,255)
    6.  从编辑菜单中选择填充,把前景色填充
    7.  选择文件菜单里面的保存成web
    8.  在保存为web对话框里选择png-8格式,带有2个颜色值和透明度
    9.  保存为一个单独的文件,如mouse-cyan.png

    我们只保存两个颜色,是为了消除形状边界的锯齿。这么做的目的是因为chroma过滤器只能过滤单一颜色。

    现在我们需要把图片放到想要产生遮罩效果的元素上,就像下图一样

    CSS遮罩——如何在CSS中使用遮罩

    我们面临的一个难题是:我们需要完成的这个效果,不能使用css中的定位属性。为什么?因为ie的过滤器遇到定位元素就不起作用了。所以最好的解决方式是使用负边距,让青色遮罩移动到元素上。例如:

    <div class="element">
      <p>Lorem ipsum dolor sit … amet.</p>
    </div>
    <img src="mouse-ie.png" style="display: block; margin-top: -300px;">	
    

    现在你可以过滤了

    <div style="width: 400px; height: 300px; filter: progid:DXImageTransform.Microsoft.Chroma(color='#00FFFF'); zoom: 1;">
      <div class="element">
        <p>Lorem ipsum dolor sit … amet.</p>
      </div>
      <img src="mouse-ie.png" style="display: block; margin-top: -300px;">
    </div>	
    

    这项技术的一个遗憾事情是,微软决定从ie10里移除所有的专有过滤器,除了条件注释。他们也移除了所有的遗留模式。所以这个解决方案也仅限于IE4-9。

    为了让ie都有效果,我们需要扩展我们的javascript

    function head () {
      if(window.SVGForeignObjectElement) {
        document.write('\
          <svg width="400px" height="300px">\
            <defs>\
              <mask id="mask" maskUnits="userSpaceOnUse" maskContentUnits="userSpaceOnUse">\
                <image width="400px" height="300px" xlink:href="mouse.png"/>\
              </mask>\
            </defs>\
            <foreignObject width="100%" height="100%" style="mask: url(#mask);">\
        ');
      } else {
        document.write('\
          <div style="width: 400px; height: 300px; filter: progid:DXImageTransform.Microsoft.Chroma(color=\'#00FFFF\'); zoom: 1;">\
        ');
      }
    }
    function foot () {
      if(window.SVGForeignObjectElement) {
        document.write('\
            </foreignObject>\
          </svg>\
        ');
      } else {
        document.write('\
            <!--[if lte IE 9]>\
            <img src="mouse-ie.png" style="display: block; margin-top: -300px;">\
            <![endif]-->\
          </div>\
        ');
      }
    }	
    

    所以如果<foreignObject>在svg里包裹的元素支持,如果不支持我们可以转成IE浏览器的过滤器实现。最后所有浏览器都实现了css遮罩效果,除了IE10浏览器。还是相当不错的,是不是?这是最终效果

    CSS遮罩——如何在CSS中使用遮罩

    Mouse shaped mask

    注意,这时当你需要硬性按照图片形状裁剪的最好方法。你可能对软性遮罩裁剪也感兴趣,只不过没有ie支持,因为chroma过滤器没有过滤软边的能力。

    在任何情况下,都不要忘了检查没有应用遮罩的输出效果是否优雅降级。因为有ie10不支持遮罩,而且javascript也可能被禁用。

    我确实说过“除了一个浏览器其他浏览器都支持吗?”我撒谎了。对于桌面浏览器是真的。大多数的移动webkit浏览器仍然落后于前沿技术。不仅是Android系统,苹果系统的safari对于svg支持的也不是很好。所以对于他们需要使用-webkit-mask-image.做加倍的svg遮罩。我们可以在样式表中这样做

    .element {
      width: 400px;
      height: 300px;
      overflow: hidden;
      background: #36f url(background.png);
      color: #fff;
      -webkit-mask-image: url(mouse.png);
    }	
    

    最后我们做到了。

    线渐变遮罩

    记得一开始我说过,你也可以使用渐变做遮罩。这也可能在上述浏览器都适用,那我们之前的步骤需要做一些调整。首先我们需要用一个渐变图片或是用一个纯的svg路径,然后定义一个svg矩形,用svg渐变填充,来代替svg遮罩内容

    <mask id="mask" maskUnits="userSpaceOnUse" maskContentUnits="userSpaceOnUse">
      <linearGradient id="g" gradientUnits="objectBoundingBox" x2="0" y2="1">
        <stop stop-color="white" stop-opacity="1" offset="0"/>
        <stop stop-color="white" stop-opacity="0" offset="1"/>
      </linearGradient>
      <rect width="400px" height="300px" fill="url(#g)"/>
    </mask>	
    

    这个代表渐变从上到下的方向(从(0,0)点到(0,1)点),第一个点的位置是完全不透明的白色,第二个点是完全透明的白色

    对于ie我们不再需要青色图片,因为我们这次不使用chroma过滤器,而是使用alpha过滤器。过去我们使用alpha过滤器,是为了弥补老的ie浏览器没有opacity属性。但是他的能力远远不至于此。你可以把他运用到渐变模式上,定义开始和结束点,也可以定义开始和结束的透明度。这是一个简单的例子:

    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100,FinishOpacity=0,Style=1,StartX=0,FinishX=0,StartY=0,FinishY=300);	
    

    这个渐变样式alpha过滤器开始于点(0,0)扩展到(0,300).开始透明度是100%,结束透明度是0%。

    移动webkit我们通常很容易这样实现

    -webkit-mask-image: -webkit-linear-gradient(top, rgba(0,0,0,1), rgba(0,0,0,0));	
    

    事实证明Android 2.0不支持渐变作为遮罩图片。我们别无选择只能使用一个渐变的png,顶部是不透明的逐渐渐变到底部是透明的。因为-webkit-mask的行为类似于小背景图片平铺盖在区域上。所以使用一个1px X 300px的图片足以。最后把嵌入的图片借助于duri.me,把图片进行64编码做为数据url,这样节省http的请求。这是我们可以放到外部样式里

    -webkit-mask-image: url(data:image/png;base64,iVBORw…[shortedned a bit]…FTkSuQmCC);	
    

    下面是javasript的修改

    function head () {
      if (window.SVGForeignObjectElement) {
        document.write('\
          <svg width="400px" height="300px">\
            <defs>\
              <mask id="mask" maskUnits="userSpaceOnUse" maskContentUnits="userSpaceOnUse">\
                <linearGradient id="g" gradientUnits="objectBoundingBox" x2="0" y2="1">\
                  <stop stop-color="white" stop-opacity="1" offset="0"/>\
                  <stop stop-color="white" stop-opacity="0" offset="1"/>\
                </linearGradient>\
                <rect width="400px" height="300px" fill="url(#g)"/>\
              </mask>\
            </defs>\
            <foreignObject width="100%" height="100%" style="mask: url(#mask);">\
        ');
      } else {
        document.write('\
          <div style="width: 400px; height: 300px; filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100,FinishOpacity=0,Style=1,StartX=0,FinishX=0,StartY=0,FinishY=300); zoom:1;">\
        ');
      }
    }
    
    function foot () {
      if (window.SVGForeignObjectElement){
        document.write('\
            </foreignObject>\
          </svg>\
        ');
      } else {
        document.write('\
          </div>\
        ');
      }
    }	
    

    如果如下:

    CSS遮罩——如何在CSS中使用遮罩

    径向渐变遮罩

    径向渐变也是可以的。我们来做一个400px X 400px的图片遮罩

    <body>
      <script>head();</script>
      <img src="photo.jpg" width="400" height="400" alt="Dude">
      <script>foot();</script>
    </body>	
    

    然后我们需要这样改变我们的svg遮罩:

    <mask id="mask" maskUnits="userSpaceOnUse" maskContentUnits="userSpaceOnUse">
      <linearGradient id="g" gradientUnits="objectBoundingBox" x2="0" y2="1">
        <stop stop-color="white" stop-opacity="1" offset="0"/>
        <stop stop-color="white" stop-opacity="0" offset="1"/>
      </linearGradient>
      <rect width="400px" height="400px" fill="url(#g)"/>
    </mask>	
    

    这里alpha过滤器的style=2中的2代表径向形状

    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100,FinishOpacity=0,Style=2);	
    

    脚本转译成:

    function head () {
      if (window.SVGForeignObjectElement) {
        document.write('\
          <svg width="400px" height="400px">\
            <defs>\
              <mask id="mask" maskUnits="userSpaceOnUse" maskContentUnits="userSpaceOnUse">\
                <radialGradient id="g" gradientUnits="objectBoundingBox" cx="0.5" cy="0.5" r="0.5" fx="0.5" fy="0.5">\
                  <stop stop-color="white" stop-opacity="1" offset="0"/>\
                  <stop stop-color="white" stop-opacity="0" offset="1"/>\
                </radialGradient>\
                <rect width="400px" height="400px" fill="url(#g)"/>\
              </mask>\
            </defs>\
            <foreignObject width="100%" height="100%" style="mask: url(#mask);">\
        ');
      } else {
        document.write('\
          <div style="width: 400px; height: 400px; filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100,FinishOpacity=0,Style=2); zoom: 1;">\
        ');
      }
    }
    
    function foot () {
      if (window.SVGForeignObjectElement) {
        document.write('\
            </foreignObject>\
          </svg>\
        ');
      } else {
        document.write('\
          </div>\
        ');
      }
    }	
    

    对于移动webkit我们再次创建一个径向渐变的位图。使用一个50px X 50px图片足够了。然后把它拉伸盖在400px×400px的元素上,我们需要使用-webkit-mask-size: cover.

    img {
        -webkit-mask-size: cover;
        -webkit-mask-image: url(data:image/png;base64,iVBORw0…[shortened a bit]…lFTkSuQmCC);
    }	
    

    最终效果:

    CSS遮罩——如何在CSS中使用遮罩

    结束语

    我承认这不是最短的文章,但是我希望你可以引起你对web遮罩效果的兴趣。如果你碰巧用到上面的技术创造了一些像样的东西,请在文章下方留下链接,或是在twitter上给我们留言。如果你有任何有关遮罩的问题,请不要犹豫,给我们提问。

    扩展阅读:

    1.  CSS Masking
    2.  CSS Masking
    3.  CSS Masks
    4.  CSS Masks in WebKit
    5.  -webkit-mask-image
    6.  CSS reflections for Firefox, with -moz-element() and SVG masks
    7.  Circular Button with Photo Mask Using CSS
    8.  Perfectly Rotate and Mask Thumbnails With CSS3

    ——大漠

    译者手语:整个翻译依照原文线路进行,并在翻译过程略加了个人对技术的理解。如果翻译有不对之处,还烦请同行朋友指点。谢谢!

    关于D姐

    网名different,前端攻城师一名,现居北京,对css3、javascript、前端UI等前端开发有浓厚兴趣,请关注我:新浪微博

    如需转载烦请注明出处:

    英文原文:http://thenittygritty.co/css-masking

    中文译文:http://www.w3cplus.com/css3/css-masking.html

    展开全文
  • 电脑运行太慢,很多小伙伴第一想到的就是加个内存,...第一、我们先看看装机内存应该选几条合适以目前看,最新的DDR4一条 8GB内存的容量和价格是非常合适大众用户的选择,还有就是,它在以后升级中组成通道是性能...

    电脑运行太慢,很多小伙伴第一想到的就是加个内存,没错,一般主板上预留了两个以上的内存插槽,加内存是升级电脑最划算的一个硬件升级,其次,可能是加个固态硬盘来提速。今天电脑学习小编教你如何选择适合自己的内存,只要你能确定电脑的用途,选择其实并不难。

    5dadf7d4dc3cd29e24da7505cd7bc173.png

    第一、我们先看看装机内存应该选几条合适

    以目前看,最新的DDR4一条 8GB内存的容量和价格是非常合适大众用户的选择,还有就是,它在以后升级中组成双通道是性能最好的。现在,如果你的资金有限的情况下,就先买一条8GB内存,等以后想升级的是情况下再加一根8G内存,这样就可以组成双通道。这在运行PS等大型程序的时候,是非常给力的。

    双通道内存读写速度:

    1f0ede22f5871b055a2557cc0408776d.png

    单通道内存读写速度:

    5d38ab2487cc55fc6c88ea6fab0ea3a0.png

    3条内存如何组双通道?

    如果恰好手里是2/2/4GB或者4/4/8GB这样的组合,是有可能组成双通道的,但也要主板支持,例如将两条4GB内存插在一条通道的插槽中,另一条8GB内存插在对应的通道插槽中,(4+4)GB与8GB同样可以构成双通道内存。但如果是3条同样容量的内存,那么都插进内存插槽后,系统只会识别成3个独立内存,不会组成双通道架构。

    选择内存频率要多高?

    目前的市场上已经基本普及了DDR4平台,有2133、2400、2666几种主要规格和一些高频产品,其中DDR4 2133濒临淘汰,价格也没优势,所以小编建议大家选购时至少从DDR4 2400起步,而第八代酷睿和第一代锐龙支持到DDR4 2666和DDR4 2933,因此这两个频率也是比较好的选择,且价格差距不大。

    7e6f1793f0b760afe268de966cb98ca9.png
    9d2d64b8c702ab92edb3f125df7d574f.png

    至于没有公开标准内存频率的第二代锐龙、锐龙APU或者超频使用,建议最多追到DDR4 3200就好了。如果是笔记本升级内存就简单多了,拆了看原配是什么,照着参数买最稳妥。

    内存电压要如何选择?

    正常频率的DDR4内存电压一般是1.2V,不过很多高频内存实际上是超频使用的,使用更高的1.35V左右电压,如果主板没能正确识别高频内存,使用默认的1.2V电压,就可能会出现系统很不稳定的情况,而内存长时间使用过高的电压,又会严重影响内存的寿命。所以在安装内存,特别是高频内存前,一定要注意内存上的参数标识,并且在BIOS设置中进行确认。

    a0dbbea978bbf91302f0fc228db32f41.png

    有些小伙伴的笔记本电脑中还出现了DDR4L内存,其实它们的电压也是1.2V,就是现在的标准电压,这是因为早期DDR4追求高频率,电压设置较高,所以当时一些厂商将1.2V的产品标称为DDR4L。要升级这些本本,只需要直接购买现在的标准电压内存就行了。

    内存小科普

    内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。内存(Memory)也被称为内存储器和主存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行。 内存是由内存芯片、电路板、金手指等部分组成的。

    展开全文
  • 首先图片自动缩放到2的n次方大小,...但是通常情况下颜色还有alpha通道也是8位 也就是传说中的RGBA 所以总共是32位 所以一般图片的计算公式是 w*h*4 256 * 512 * 4/ 1024 /1024 = 0.5M 当然我没有实际测试过 然...
  • 遥控器有四个通道,分别对应四个舵机,而舵机又通过连杆等传动元件带动舵面的转动,从而改变飞机的运动状态。舵机因此得名:控制舵面的伺服电机。 不仅在航模飞机中,在其他的模型运动中都可以看到它的应用:船模上...
  • 如何将真彩色图转换为各种灰度图

    千次阅读 2017-03-28 17:07:55
    一般可以使用 1 、 2 、 4 、 8 、 16 、 24、 32 位来存储这三颜色,不过现在一个分量最大是用 8 位来表示,最大值是 255 ,对于 32 位的颜色,高 8 位是用来表示通明度(alpha tunnel)的,即RGBA四通道。...
  • # 由一个卷积和一个最大池化组成。滤波器1x16中算出32个特征,是因为使用32个滤波器进行卷积 # 卷积的权重张量形状是[1, 16, 1, 32],1是输入通道的个数,32是输出通道个数 W_conv1 = weight_variable([1, kernel_...
  • 4. 基本的学习流程 5. 基本的建站流程表 6. 简易的安全防护 第一部份 Linux 的规划与安装 常常听到Linux具有非常优良的血统,所以具有相当良好的多用户多任务环境,可以方便程序 设计师来开发软件。 此外,Linux本身...
  • 交易主题:交易金融属性、业务类别、支付通道组成宽表。 3.使用哪个账户 账户主题:账户属性(所属客户、开户日期、所属分行、产品、利率、成本)组成宽表 4.通过什么渠道 渠道主题:渠道属性、维度、限额组成宽表 5...
  • 位图文件的保存

    2016-04-25 18:25:00
    位图文件主要有4部分组成: 文件头信息 位图头信息 调色板 ,在1、8、16位色中存在调试板;在24和32位色中无调色板,直接使用像素各通道的值混合成像素颜色。 位图的数据 将位图写入磁盘文件也就是依次将文件头信息...
  • 网络中如果有多台设备,如何才能将他们连接...电路交换网是由物理链路连接的一组交换机,两个站点的连接是由一条或者多条链路组成的的专用路径,每次连接都使用链路上的一条专用通道。 下图表示一个有4个交换机和4条链
  • OpenGL入门笔记(七)

    2017-12-27 19:53:00
    至于如何结合这两个颜色则依赖于颜色的alpha通道的分量值,以及/或者所使用的混色函数。Alpha通常是位于颜色值末尾的第4个颜色组成分量。前面这些课我们都是用GL_RGB来指定颜色的三个分量。相应的GL_RGBA可以指定...
  • 至于如何结合这两个颜色则依赖于颜色的alpha通道的分量值,以及/或者所使用的混色函数。Alpha通常是位于颜色值末尾的第4个颜色组成分量。前面这些课我们都是用GL_RGB来指定颜色的三个分量。相应的GL_RGBA可以指定...
  • 透明混合

    2014-03-15 20:28:14
    至于如何结合这两个颜色则依赖于颜色的alpha通道的分量值,以及/或者所使用的混色函数。Alpha通常是位于颜色值末尾的第4个颜色组成分量。前面这些课我们都是用GL_RGB来指定颜色的三个分量。相应的GL_RGBA可以指定...
  • Alpha混合

    2012-12-27 11:50:09
    至于如何结合这两个颜色则依赖于颜色的alpha通道的分量值,以及/或者所使用的混色函数。Alpha通常是位于颜色值末尾的第4个颜色组成分量。前面这些课我们都是用 GL_RGB来指定颜色的三个分量。相应的GL_RGBA可以指定...
  • OpenGL Alpha混合

    千次阅读 2010-02-26 17:28:00
    原 文:Lesson 8: ...至于如何结合这两个颜色则依赖于颜色的alpha通道的分量值,以及/或者所使用的混色函数。Alpha通常是位于颜色值末尾的第4个颜色组成分量。前面这些课我们都是用GL_RGB来指定颜色的三个分量。相
  • X盘云盘

    千次阅读 2013-03-27 13:37:17
    云存储系统的结构模型由4组成,如图1所示。  1)存储层  存储层是云存储最基础的部分。存储设备可以是FC光纤通道存储设备,可以是NAS和 iSCSI等IP存储设备,也可以是 SCSI或SAS等 DAS存储
  • OpenGL教程之Alpha混合

    2010-08-05 22:05:00
    至于如何结合这两个颜色则依赖于颜色的alpha通道的分量值,以及/或者所使用的混色函数。Alpha通常是位于颜色值末尾的第4个颜色组成分量。前面这些课我们都是用GL_RGB来指定颜色的三个分量。相应的GL_RGBA可以指定...
  • 第八课:融合

    2010-10-31 14:42:13
    至于如何结合这两个颜色则依赖于颜色的alpha通道的分量值,以及/或者所使用的融合函数。alpha通常是位于颜色值末尾的第4个颜色组成分量。前面这些课我们都是用GL_RGB来指定颜色的三个分量。相应的GL_RGBA可以指定...
  • Java进阶之异常

    2021-01-14 13:30:47
    对异常的处理方式4>异常对象两个重要的方法5>try..catch..finally 1>什么是异常 异常:中断了正常指令流的事件。程序运行过程中产生的错误,与编译无关。 即:不是代码的语法错误,而是在使用命令java ...
  • 至于如何结合这两个颜色则依赖于颜色的alpha通道的分量值,以及/或者所使用的混色函数。Alpha通常是位于颜色值末尾的第4个颜色组成分量。前面这些课我们都是用GL_RGB来指定颜色的三个分量。相应的GL_RGBA可以指定...
  • 1.1 系统的组成 1.1.1 工业计算机 1.1.2 操作系统 1.1.3 卡的安装 1.1.4 适配卡的驱动程序 1.2 系统中的各种输入输出 1.2.1 输入输出的种类 1.2. 2 输入输出接头外观 1.2.3 接头的使用时机 1.2.4 ...
  • {呵呵,这两课早就翻译好了,一直没...至于如何结合这两个颜色则依赖于颜色的alpha通道的分量值,以及/或者所使用的混色函数。Alpha通常是位于颜色值末尾的第4个颜色组成分量。前面这些课我们都是用GL_RGB来指定颜色的
  • 实务4 如何下载Oracle的安装文件 实务5 Oracle安装完成后,用户sys与system默认的密码是什么 实务 实务6 如何找到Oracle安装时生成的日志文件 实务7 安装Oracle时,是否需要安装JDK 实务8 解压安装文件时,报告无...

空空如也

空空如也

1 2 3 4
收藏数 71
精华内容 28
关键字:

如何组成4通道