精华内容
下载资源
问答
  • matlab开发-设置图像透明度设置图像透明淡入淡出。setFigTransparency设置图形窗口的透明度/不透明度,具有可选的淡入效果
  • Canvas 像素处理之改变透明度

    千次阅读 2017-04-12 10:54:53
    getImageData()方法返回 ImageData 对象,该对象拷贝了画布指定矩形的像素数据。 注意:ImageData对象不是图像,它规定了画布上一个部分(矩形),并保存了该矩形内每个像素的信息。 对于ImageData对象中的每个...
    一 定义和用法
    getImageData()方法返回 ImageData 对象,该对象拷贝了画布指定矩形的像素数据。
    注意:ImageData对象不是图像,它规定了画布上一个部分(矩形),并保存了该矩形内每个像素的信息。
    对于ImageData对象中的每个像素,都存在着四方面的信息,即RGBA值:
    R - 红色(0-255)
    G - 绿色(0-255)
    B - 蓝色(0-255)
    A - alpha 通道(0-255; 0 是透明的,255 是完全可见的)
    color/alpha 信息以数组形式存在,并存储于 ImageData 对象的 data 属性中。
    提示:在操作完成数组中的 color/alpha 信息之后,您可以使用 putImageData() 方法将图像数据拷贝回画布上。
     
    二 代码
    <!DOCTYPE html>
    <html>
    <head>
    	<meta name="author" content="Yeeku.H.Lee(CrazyIt.org)" />
    	<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
    	<title> 改变透明度 </title>
    </head>
    <body>
    <h2> 改变透明度 </h2>
    <canvas id="mc" width="600" height="460"
    	style="border:1px solid black"></canvas>
    <script type="text/javascript">
    	// 获取canvas元素对应的DOM对象
    	var canvas = document.getElementById('mc');
    	// 获取在canvas上绘图的CanvasRenderingContext2D对象
    	var ctx = canvas.getContext('2d');
    	var image = new Image();
    	image.src = "test.png";
    	image.onload = function()
    	{
    		// 用带透明度参数的方法绘制图片
    		drawImage(image , 124  , 20 , 0.4);
    	}
    	var drawImage = function(image , x  , y , alpha)
    	{
    		// 绘制图片
    		ctx.drawImage(image , x , y);
    		// 获取从x、y开始,宽为image.width、高为image.height的图片数据
    		// 也就是获取绘制的图片数据
    		var imgData = ctx.getImageData(x , y , image.width , image.height);
    		for (var i = 0 , len = imgData.data.length ; i < len ; i += 4 )
    		{
    			// 改变每个像素的透明度
    			imgData.data[i + 3] = imgData.data[i + 3] * alpha;
    		}
    		// 将获取的图片数据放回去。
    		ctx.putImageData(imgData , x , y);
    	}
    </script>
    </body>
    </html>
     
    三 运行结果

     
    • 大小: 14.5 KB
    展开全文
  • 主要介绍了Canvas 像素处理之改变透明度的实现代码的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • Python调整图片透明度

    千次阅读 2020-08-27 11:28:32
    from PIL import Image img = Image.open("logo.png") img = img.convert('...# 设置每个像素点颜色的透明度 for i in range(x): for k in range(y): color = img.getpixel((i, k)) color = color[:-1] + (100, )
    from PIL import Image
    
    img = Image.open("logo.png")
    img = img.convert('RGBA') # 修改颜色通道为RGBA
    x, y = img.size # 获得长和宽
    
    # 设置每个像素点颜色的透明度
    for i in range(x):
        for k in range(y):
            color = img.getpixel((i, k))
            color = color[:-1] + (100, )
            img.putpixel((i, k), color)
    
    img.save("tologo.png") # 要保存为.PNG格式的图片才可以
    
    展开全文
  • Unity Shader 透明度测试

    2019-09-09 17:38:22
    在实时渲染中要实现透明效果, 通常会... 当透明度为 1 时, 表示该像素是完全不透明的, 而当其为 0 时, 则表示该像素完全不会显示。 在 Unity 中, 我们通常使用两种方法来实现透明效果: 第一种是使用透明度...

     在实时渲染中要实现透明效果, 通常会在渲染模型时控制它的透明通道( Alpha Channel)。 当开启透明混合后, 当一个物体被渲染到屏幕上时, 每个片元除了颜色值深度值之外, 它还有另一个属性—透明度。 当透明度为 1 时, 表示该像素是完全不透明的, 而当其为 0 时, 则表示该像素完全不会显示。

     

    在 Unity 中, 我们通常使用两种方法来实现透明效果:

    第一种是使用透明度测试( Alpha Test), 这种方法其实无法得到真正的半透明效果;

    另一种是透明度混合(Alpha Blendhig)

     

    对于不透明物体,不考虑它们的渲染顺序也能得到正确的排序效果,这是由于强大的深度缓冲的存在。深度缓冲的基本思想是:根据深度缓存中的值来判断该片元距离摄像机的距离,当渲染一个片元时,需要把它的深度值和已经存在于深度缓冲中的值进行比较(如果开启了深度测试,默认判断是小于等于),如果它的值距离摄像机更远,那么说明这个片元不应该被渲染到屏幕上(有物体挡住了它);否则,这个片元应该覆盖掉此时颜色缓冲中的像素值,并把它的深度值更新到深度缓冲中(如果开启了深度写入)。

     

    透明度测试和透明度混合的基本原理如下: 
    透明度测试:只要一个片元的透明度不满足条件(通常是小于某个阈值),那么它对应的片元就会被舍弃。被舍弃的片元将不会再进行任何处理,也不会对颜色缓冲产生任何影响;否则,就会按照普通的不透明物体的处理方式来处理它,即进行深度测试、深度写入等。也就是说,透明度测试是不需要关闭深度写入的,它和其他不透明物体最大的不同就是它会根据透明度来舍弃一些片元。虽然简单,但是它产生的效果也很极端,要么完全透明,即看不到,要么完全不透明。

    透明度混合:这种方法可以得到真正的半透明效果。它会使用当前片元的透明度作为混合因子,与已经存储在颜色缓冲中的颜色值进行混合,得到新的颜色。但是,透明度混合需要关闭深度写入,这使得我们要非常小心物体的渲染顺序。 
    需要注意的是,透明度混合只关闭了深度写入,但没有关闭深度测试。这意味着,当使用透明度混合渲染一个片元时,还是会比较它的深度值与当前深度缓冲中的深度值,如果它的深度值距离摄像机更远,那么久不会再进行混合操作了。这一点决定了,当一个不透明物体出现在一个透明物体的前面,而我们先渲染了不透明物体,它仍然可以正常地遮挡住透明物体。也就是说,对于透明度混合来说,深度缓冲是只读的(不会进行写入操作,只会进行读取操作)。

     

    渲染引擎一般都会先对物体进行排序,再渲染。常用的方法是: 
    1)先渲染所有不透明的物体,并开启它们的深度测试和深度写入。

    2)把半透明物体按它们距离摄像机的远近进行排序,然后按照从后往前的顺序渲染这些半透明物体,并开启它们的深度测试,但关闭深度写入。

     

    索引号越小表示越早被渲染

    透明度测试shader:

    Shader "MyShader/AlphaTest"
    {
        Properties
        {
            _Color("Main Tint",Color) = (1,1,1,1)
            _MainTex("Main Tex",2D) = "white"{}
            _Cutoff("Alpha Cutoff",Range(0,1)) = 0.5
        }
    
            SubShader
            {
                Tags{"Queue" = "AlphaTest" "IgnoreProjector" = "True" "RenderType" = "TransparentCutout"}
                Pass
            {
                Tags{"LightMode" = "ForwardBase"}
    
                CGPROGRAM
    #pragma vertex vert
    #pragma fragment frag
    #include "Lighting.cginc"
    
                fixed4 _Color;
            sampler2D _MainTex;
            float4 _MainTex_ST;
            fixed _Cutoff;
    
            struct a2v
            {
                float4 vertex:POSITION;
                float3 normal:NORMAL;
                float4 texcoord:TEXCOORD0;
            };
    
            struct v2f
            {
                float4 pos:SV_POSITION;
                float3 worldNormal:TEXCOORD0;
                float3 worldPos:TEXCOORD1;
                float2 uv:TEXCOORD2;
            };
    
            v2f vert(a2v v)
            {
                v2f o;
    
                o.pos = UnityObjectToClipPos(v.vertex);
    
                o.worldNormal = UnityObjectToWorldNormal(v.normal);
    
                o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
    
                o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
    
                return o;
            }
    
            fixed4 frag(v2f i) :SV_Target
            {
                fixed3 worldNormal = normalize(i.worldNormal);
    
            fixed3 worldLightDir = normalize(UnityWorldSpaceLightDir(i.worldPos));
    
            fixed4 texColor = tex2D(_MainTex, i.uv);
    
            clip(texColor.a - _Cutoff);
    
            or
            //if ((texColor.a - _Cutoff) < 0.0)
            //{
            //    discard;
            //}
            up
    
            fixed3 albedo = texColor.rgb * _Color.rgb;
    
            fixed3 ambient = UNITY_LIGHTMODEL_AMBIENT.xyz * albedo;
    
            fixed3 diffuse = _LightColor0.rgb * albedo * max(0, dot(worldNormal, worldNormal));
    
            return fixed4(ambient + diffuse, 1.0);
            }
                ENDCG
            }
            }
                Fallback "Transparent/Cutout/VertexLit"
    }
    

    为了在材质面板中控制透明度测试时使用的阈值,我们在 Properties 语义块中声明一个范围在 [0,1] 之间的属性 _Cutoff,

    _Cutoff 参数用于决定我们调用 clip 进行透明度测试时使用的判断条件。

    范围在 [0,1] 之间的属性 _Cutoff,可以用 fixed 精度来存储它。

     

    discard 指令来显式剔除该片元。

     

    效果,_Cutoff = 0.49

    效果,_Cutoff = 0.59

    效果,_Cutoff = 0.69

    效果,_Cutoff = 0.79

    效果,_Cutoff = 0.81

     效果很极端,要么完全透明,要么完全不透明,它的效果往往像在一个不透明物体上挖了一个空洞。而且。得到的透明效果在边缘处往往参差不齐,有锯齿,这是因为在边界处纹理的透明度的变化精度问题。

    透明度测试的双面渲染

    Shader "MyShader/AlphaTest"
    {
        Properties
        {
            _Color("Main Tint",Color) = (1,1,1,1)
            _MainTex("Main Tex",2D) = "white"{}
            _Cutoff("Alpha Cutoff",Range(0,1)) = 0.5
        }
    
            SubShader
            {
                Tags{"Queue" = "AlphaTest" "IgnoreProjector" = "True" "RenderType" = "TransparentCutout"}
                Pass
            {
                Tags{"LightMode" = "ForwardBase"}
                Cull Off
                CGPROGRAM
    #pragma vertex vert
    #pragma fragment frag
    #include "Lighting.cginc"
    
                fixed4 _Color;
            sampler2D _MainTex;
            float4 _MainTex_ST;
            fixed _Cutoff;
    
            struct a2v
            {
                float4 vertex:POSITION;
                float3 normal:NORMAL;
                float4 texcoord:TEXCOORD0;
            };
    
            struct v2f
            {
                float4 pos:SV_POSITION;
                float3 worldNormal:TEXCOORD0;
                float3 worldPos:TEXCOORD1;
                float2 uv:TEXCOORD2;
            };
    
            v2f vert(a2v v)
            {
                v2f o;
    
                o.pos = UnityObjectToClipPos(v.vertex);
    
                o.worldNormal = UnityObjectToWorldNormal(v.normal);
    
                o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
    
                o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
    
                return o;
            }
    
            fixed4 frag(v2f i) :SV_Target
            {
                fixed3 worldNormal = normalize(i.worldNormal);
    
            fixed3 worldLightDir = normalize(UnityWorldSpaceLightDir(i.worldPos));
    
            fixed4 texColor = tex2D(_MainTex, i.uv);
    
            clip(texColor.a - _Cutoff);
    
            or
            //if ((texColor.a - _Cutoff) < 0.0)
            //{
            //    discard;
            //}
            up
    
            fixed3 albedo = texColor.rgb * _Color.rgb;
    
            fixed3 ambient = UNITY_LIGHTMODEL_AMBIENT.xyz * albedo;
    
            fixed3 diffuse = _LightColor0.rgb * albedo * max(0, dot(worldNormal, worldNormal));
    
            return fixed4(ambient + diffuse, 1.0);
            }
                ENDCG
            }
            }
                Fallback "Transparent/Cutout/VertexLit"
    }
    

    效果

    参考 我买的 unity shader 入门精要

    展开全文
  • 这是河流数据,理想情况下,这里代表的每个像素为0将是完全透明的。 对此做了一些研究,似乎我可以将我的数据转换成RGBA数组,并将alpha值设置为仅使不需要的单元格透明。然而,河流数组中的值是浮动的,不能被转换...

    我试图用matplotlib来绘制一些我正在研究的文件的数字。我有二组数据在二维数组:一个ascii山体阴影栅格,我可以很高兴地绘制和调整使用:

    import matplotlib.pyplot as pp

    import numpy as np

    hillshade = np.genfromtxt('hs.asc', delimiter=' ', skip_header=6)[:,:-1]

    pp.imshow(hillshade, vmin=0, vmax=255)

    pp.gray()

    pp.show()

    这使:

    还有一个第二个ascii光栅,描绘了横跨风景的河流的属性。该数据可以以与上述相同的方式绘制,但是不对应于河网的阵列中的值被指定为-9999的无数据值。目的是使无数据值设置为透明,以便河流值覆盖山体阴影。

    这是河流数据,理想情况下,这里代表的每个像素为0将是完全透明的。

    对此做了一些研究,似乎我可以将我的数据转换成RGBA数组,并将alpha值设置为仅使不需要的单元格透明。然而,河流数组中的值是浮动的,不能被转换(因为原始值是图的整个点),我相信如果使用RGBA格式,imshow函数只能取无符号整数。

    有没有办法解决这个限制?我曾经希望我可以用像素值和alpha值创建一个元组,并将它们绘制成这样,但这似乎不可能。

    我也和PIL一起玩,试图创建一个没有数据值透明的河流数据的PNG文件,但这似乎自动将像素值缩放到0-255,从而失去了我需要保留的值。

    我欢迎任何人对这个问题的任何见解。

    展开全文
  • 本文介绍透明度叠加算法(Alpha Blending Algorithm),并用 C#/WPF 的代码,以及像素着色器的代码 HLSL 来实现它。 本文内容算法在 C# 代码中实现在像素着色器中实现 算法 对于算法,我只是搬运工,可以随意搜索到...
  • /** * @param $picture 图片数据流 比如file_get_contents(imageurl)返回的东东 * @param $destfile 存储路径 */ function miniImg($picture,$destfile) { //获取源图gd图像标识符 $srcImg =...
  • 设置图形和模板颜色的透明度级别:此颜色的像素为 100% 透明。 3. 在多显示器设置上放置数字。 4. 剪辑区域:仅在指定矩形内绘制像素(例如闪屏)。 5. 锁定光标:特别是对于游戏来说,将鼠标光标保持在指定的矩形...
  • Unity透明效果-透明度测试

    千次阅读 2020-12-21 02:41:46
    在之前的记录中已经知道了透明度测试的原理。本节主要就在Unity中通过透明度测试实现透明效果进行实践。原理回顾透明度测试采用一种“非舍即留”的机制,即,若某片元的透明度不满足条件(通常小于某个阈值),则舍弃...
  • div设置透明度

    千次阅读 2021-06-11 17:50:44
    css怎样仅设置div元素背景透明度,而不设置div元素设置div元素背景透明度,而不设置div里面元素透明度的方法:创建静态页面插入一个div和十个子div-类选择器和元素选择器设置div标签-打开浏览器预览-使用nthoftype...
  • 在介绍透明换算前,先简单的介绍一下RGB和ARGB RGB RGB就是三原色( Red 红, Green 绿, Blue 蓝),所有的颜色都是这三种颜色以不同的强度组成的。而对于16 进制编码的颜色,我们可以这样理解,rrggbb六个字符:前两个...
  • WebGL透明度与α融合

    2019-11-25 17:14:43
    WebGL透明度与α融合 WebGL教程(电子书) 本文是WebGL电子书的1.15节内容 半透明三角形叠加.html源码效果如下如图所示。 渲染管线之融合 GPU的渲染管线有各种功能单元,比如前面讲到的深度测试侧单元,通过执行gl....
  • 原文地址:http://blog.csdn.net/qipa_game/article/details/38116805 Color4B Sprite::getPixelColor(const Vec2& pos) { int8_t data[4]; Vec2 oldPos = this->getPosition(); Vec2 oldAnchor = this->getAnchorPo
  • 透明度计算

    千次阅读 2017-07-19 13:48:36
    换算 在开发过程中,UI/UE给...将透明度转换成不透明度(转换方式参考“透明度”,第2条) 。 不透明度为60%不透明度乘以255。 我们得到结果:153将计算结果转换成16进制。得到最终的不透明度:99将不透明度和颜色值拼
  • 顺序无关透明度 基于链表的实现 基本实施 这是基于AMD演示的OIT的实现。 它基于片段创建了链接列表。 在解析过程中,我们遍历每个像素的链表。 对链接列表进行排序。 计算像素的最终颜色。 涵盖的概念 这个演示包括...
  • CSS3中的很多都可以类比与我们canvas的一些属性 canvas中“画笔”环境对象的很多属性都可以类比CSS3中的属性 我们不仅仅可以绘制图形,还可以向画布中添加文字文字填充同样先获取元素对象与环境对象...
  • Windows 窗口透明知识点

    千次阅读 2019-05-18 18:38:14
    透明窗口要求: 窗口不能是Child类型 要使使窗体拥有透明效果,首先要有WS_EX_LAYERED扩展属性,方法可以在CreateWindowEx时指定,也可以SetWindowLong动态设置。如下代码可设置分层窗口: LONG style = ...
  • 设置图片透明度代码:(你可能会想尝试修改每个像素的颜色或者透明度并将其写到屏幕上。但是要注意Image对象是只读的,要写入新的数据,你需要一个WritableImage对象来替代之) public class ImageUtil { ...
  • Ps中 不透明度和填充的区别

    千次阅读 2015-09-07 11:59:42
    总的来说不透明度调节的是整个图层的不透明度, 注意是整个图层的,而填充是只是改变填充部分的不透明度。 调整不透明度会影响整个图层中多有的对象(原图层中的对象和添加的各种图层样式效果),而修改填充时只会...
  • 这产生了一个新的需求:产生一个带有透明度的图像;将带有透明度的图像,叠加在原始图像上。Matlab中的透明度图像带透明背景的图像,用普通图像软件打开时,比如window自带的照片查看器,会得到一个黑色背景。 我把...
  • 代码简介:jquery可变透明度返回顶部特效,如果向下滚动超过1200像素,按钮的透明度会下降,减少视觉干扰,更便于浏览内容主体,非常贴心的用户体验。
  • iOS之深入解析预乘透明度Premultiplied Alpha

    万次阅读 多人点赞 2021-10-18 15:32:35
    以最常见的 filtering 方式线性插值为例,一个宽 2px 高 1px 的图片,左边的像素是红色,右边是绿色 10% 透明度,如果把这个图片缩放到 1x1 的大小,那么缩放后 1 像素的颜色就是左右两个像素线性插值的结果,也...
  • 给图片设置透明度

    2020-06-11 18:41:27
    from PIL import Image img = Image.open("F:/mx_matting/test_pic/img_resize/erzhitu_bai/000006_croped7_2.png") ...#设置每个像素点颜色的透明度 for i in range(x): for k in range(y): color = img.getp
  • c#代码Emgucv高效遍历图像像素的代码,可以直接运行,VS2008
  • //TODO 设置阴影 第一个参数是 透明度 第二三个是纵横阴影长度 第四个颜色值 tvContent.setShadowLayer(blur,10,10,Color.parseColor(changeColor(blurColor))); //TODO 根据颜色id 转换解析颜色 目的是将透明...
  • 透明度 函数用于加速处理复杂的不透明度计算。 不透明度函数 以下是“不透明度”类别下所有函数的列表。 SoftOpacity(软不透明度) SoftOpacity(软不透明度) 函数接收一个不透明度值,然后对其运行各种计算,...
  • html透明度调整

    千次阅读 2019-05-24 12:32:35
    通过改变最后一个值来设置背景图片的透明度。 第一种方法:背景图+定位+background: url(timg.jpg)no-repeat; Document 我是吴亦凡 效果图一: 第二种方法:背景图+伪类+flite:blur(5px) ...
  • 博客配套文件,解决常见的Bitmap转HBITMAP背景变浅,HBITMAP转Bitmap背景变黑的问题,并演示了如何输出HBITMAP和Bitmap的每行像素,所有代码封装成了类,可以直接在生产环境中使用。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 73,001
精华内容 29,200
关键字:

像素透明度