图片置灰

〈img src="图片地址" style="filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1)" onmouseover="this.style.filter='progid:DXImageTransform.Microsoft.BasicImage(grayscale=0)'" onmouseout="this.style.filter='progid:DXImageTransform.Microsoft.BasicImage(grayscale=1)'">


  如果想让整个网站的图片变灰,在样式表中加入

img{filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);}

按纽变灰
INPUT { border:1px solid #999; filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);}
不同的开发场景有不同的给图片的方法: - **iOS开发**:可以使用以下方法实现图片去色功能,使图片色显示。 ```objc - (UIImage *)grayImage:(UIImage *)sourceImage { int bitmapInfo = kCGImageAlphaNone; int width = sourceImage.size.width; int height = sourceImage.size.height; CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray(); CGContextRef context = CGBitmapContextCreate (nil,width,height,8,0,colorSpace,bitmapInfo); CGColorSpaceRelease(colorSpace); if (context == NULL) { return nil; } CGContextDrawImage(context,CGRectMake(0, 0, width, height), sourceImage.CGImage); UIImage *grayImage = [UIImage imageWithCGImage:CGBitmapContextCreateImage(context)]; CGContextRelease(context); return grayImage; } ``` 此方法接收一个 `UIImage` 类型的图片作为参数,返回后的图片 [^1]。 - **CSS开发**:使用 `filter` 属性可以实现图片。核心属性为 `filter: grayscale(100%)`,值为 100% 则完全转为度图像,若为初始值 0% 则图像无变化,值在 0% 到 100% 之间,则是该效果的线性乘数。示例代码如下: ```css img { filter: grayscale(100%); } ``` 这样就能将页面上的图片 [^2]。 - **NGUI开发**:可以使用如下代码实现图片。 ```csharp public void SetGray(){ Material mat = new Material(Shader.Find("Unlit/Transparent Colored Grey")); mat.mainTexture = material.mainTexture; m_grayMaterial = mat; } ``` 该方法创建一个新的材质并将其设色材质 [^3]。 - **Unity开发**:可以创建一个自定义的Shader来实现图片。在Unity编辑器中,右键点击 `Assets` 文件夹,选择 `Create -> Shader -> Unlit Shader`,代码如下: ```glsl Shader "Custom/GrayScaleShader" { Properties { _MainTex ("Base (RGB)", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct appdata_t { float4 vertex : POSITION; float2 uv : TEXCOORD0; }; struct v2f { float4 pos : POSITION; float2 uv : TEXCOORD0; }; sampler2D _MainTex; float4 _MainTex_ST; v2f vert (appdata_t v) { v2f o; o.pos = UnityObjectToClipPos(v.vertex); o.uv = TRANSFORM_TEX(v.uv, _MainTex); return o; } half4 frag (v2f i) : SV_Target { half4 color = tex2D(_MainTex, i.uv); float gray = dot(color.rgb, half3(0.299, 0.587, 0.114)); return half4(gray, gray, gray, color.a); } ENDCG } } } ``` 将该Shader应用到图片材质上即可实现效果 [^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值