网站怎么做黑白化处理(iOS 实现app黑白模式)
本文目录
- iOS 实现app黑白模式
- VB.NET图片的黑白处理法(二值化)
- 网站去色怎么弄
- 今天各大网站首页同时变黑白,在技术上是怎么做的
- ai设计网页怎么把页面铺色
- 怎么样把图处理成黑白
- 网站黑白
- 现在的网页一下全变黑白了,怎么做的呀.
iOS 实现app黑白模式
2020的是被疫情覆盖的一年,在国内疫情得到控制之后,全国在4.4日举行了疫情哀悼纪念,而互联网的产物在那天也做出了很多默契的配合,比如说很多网站暂停运营一天,很多app网页的UI变成了黑白模式,那天我刷了一整天的手机看到的画面全是黑白的,第二天又调整为正常了.作为一个iOS开发,我思考如何才能更好的达到这种黑白与彩色之前的切换,想了以下几种思路:
通过查询资料,未找到方式1相关的api,iOS设备自身有个功能叫 颜色反转 ,有兴趣的可以去打开该功能看看,我在想这其实和实现黑白模式的原理是一样的,但是苹果未开放相关api
方式2看起来可行,我觉得一些app等在那天就是采用了这样的方式来实现的黑白化,因为app里的内容不是说有的都改成了黑白,只有部分图片或者页面改成了黑白模式,但是工作量有点太大了,而且不够灵活
方式3我认为是比较可靠可行的,于是我按照方式3的思路实现了UIColor及图片的黑白化
首先贴上一张没有开启黑白化的page原图,可以看到图片,color都是正常的
UIColor方法捕捉
我们注意以下这3处的颜色变化
在该方法中我们可以捕获到系统预设的systemColor,如果想知道到底有哪些systemColor,可以通过 这样更加灵活
通常情况下,我们的app里的图片控件都会采用UIImageView,这里我只是正对 UIImageView 进行了 setImage 的hook,如果有其他情况,需要自己处理,掌握了此 黑白化 的技巧,其他的处理方式也差不多
图片的黑白化,我采用的是 CIFilter 滤镜实现,我们看下 黑白 和 单色 两种滤镜
效果差不多,但是在图片色彩丰富的图片上,个人认为Mono会比Noir效果好看点
至此,我们可以通过服务器来灵活配置关键参数 monochromatic ,开启或者关闭 黑白化 功能,实现app基本全面黑白化
demo参考
VB.NET图片的黑白处理法(二值化)
原始图片
黑白处理后图片
原始图片:
黑白处理后图片:
部分处理代码:
code
Dim ts2 As IThresholder = New GlobalMeanThreshold(inbmp)
Dim tsBMP As New Bitmap(PictureBox1.Width, PictureBox1.Height)
ts2.RenderToBitmap(tsBMP)
PictureBox6.Image = tsBMP
PictureBox6.Height = PictureBox1.Height
PictureBox6.Width = PictureBox1.Width
PictureBox6.Left = 0
PictureBox6.Top = 0
理论知识:
灰度图像的二值化处理就是讲图像上的点的灰度置为0或255,也就是讲整个图像呈现出明显的黑白效果。即将256个亮度等级的灰度图像通过适当的阀值选取而获得仍然可以反映图像整体和局部特征的二值化图像。在数字图像处理中,二值图像占有非常重要的地位,特别是在实用的图像处理中,以二值图像处理实现而构成的系统是很多的,要进行二值图像的处理与分析,首先要把灰度图像二值化,得到二值化图像,这样子有利于再对图像做进一步处理时,图像的集合性质只与像素值为0或255的点的位置有关,不再涉及像素的多级值,使处理变得简单,而且数据的处理和压缩量小。为了得到理想的二值图像,一般采用封闭、连通的边界定义不交叠的区域。所有灰度大于或等于阀值的像素被判定为属于特定物体,其灰度值为255表示,否则这些像素点被排除在物体区域以外,灰度值为0,表示背景或者例外的物体区域。如果某特定物体在内部有均匀一致的灰度值,并且其处在一个具有其他等级灰度值的均匀背景下,使用阀值法就可以得到比较的分割效果。如果物体同背景的差别表现不在灰度值上(比如纹理不同),可以将这个差别特征转换为灰度的差别,然后利用阀值选取技术来分割该图像。动态调节阀值实现图像的二值化可动态观察其分割图像的具体结果。
灰度图像的二值化没有固定的算法,根据图像区域中目标物体的不同而有不同的二值化算法.目前最主要的方法有:最大值法,平均值法,加权平均值法
如下边代码:
Private Function SetBitMapToBlackAndWhite(bmp As Bitmap) As Bitmap
Try
Dim height As Integer = bmp.Height
Dim Width As Integer = bmp.Width
Dim newBitMap As New Bitmap(Width, height)
Dim pixel As Color
For x As Integer = 0 To Width - 1
For y As Integer = 0 To height - 1
pixel = bmp.GetPixel(x, y)
Dim r As Integer
Dim g As Integer
Dim b As Integer
Dim Result As Integer
Result = 0
r = pixel.R
g = pixel.G
b = pixel.B
Dim iType As Integer = 2
Select Case iType
Case 0
’平均值法
Result = (r + g + b) / 3
Exit Select
Case 1
’最大值法
If (r
g) Then
Result = r
Else
Result = g
End If
If (Result
b) Then
Result = Result
Else
Result = b
End If
Exit Select
Case 2
’加权平均值
#p#副标题#e#
Result = CInt(0.7) * r + CInt(0.2) * g + CInt(0.1) * b
Exit Select
End Select
newBitMap.SetPixel(x, y, Color.FromArgb(Result, Result, Result))
Next
Next
Return newBitMap
Catch ex As Exception
Return Nothing
End Try
End Function
该函数实现的简单的图像2值化。
实际使用中最简单的二值化算法就是根据每个像素的灰度值做舍入处理,比如二值化阀值可以设置为0-255的中值127,但是这种的二值化没有根基图像的整体灰度值所在范围做考虑,所以效果很差.
网上流传较广的是根据图像的直方图求取阀值:可以到网上搜索,我就不重复了
介绍我的方法:
public override unsafe void DoThresholding()
{
System.Drawing.Imaging.BitmapData indata = InBMP.LockBits(new Rectangle(0, 0, InBMP.Width, InBMP.Height),
System.Drawing.Imaging.ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
byte* ptr = (byte*)indata.Scan0.ToPointer();
Histogram his = new Histogram(indata, ptr, 0, 0, InBMP.Width, InBMP.Height);
int mean = Math.Max((int)his.Mean, 0) * 3;
//图像阀值
int stride = indata.Stride;
for (int x = this.Width - 1; x = 0; x--)
{
for (int y = this.Height - 1; y = 0; y--)
{
int average = (ptr +
ptr +
ptr);
//byte average = (byte)((ptr));
if (average
mean)
Data = 255;
else
Data = 0;
}
}
InBMP.UnlockBits(indata);
}
}
byte HistogramData;
unsafe public Histogram(System.Drawing.Imaging.BitmapData indata, byte* ptr,
int left, int top, int width, int height)
{
HistogramData = new byte;
for (int i = 0; i
256; i++)
HistogramData = 0;
int right = Math.Min(left + width, indata.Width);
int bottom = Math.Min(top + height, indata.Height);
int stride = indata.Stride;
for (int x = left; x
right; x++)
{
for (int y = top; y
bottom; y++)
{
HistogramData += 1;
HistogramData += 1;
HistogramData += 1;
}
}
CalculateMean();
CalculateMinMax();
}
unsafe public Histogram(byte* ptr, int stride, int imgWidth, int imgHeight,
int left, int top, int width, int height)
{
HistogramData = new byte;
int right = Math.Min(left + width, imgWidth);
int bottom = Math.Min(top + height, imgHeight);
for (int x = left; x
right; x++)
{
for (int y = top; y
bottom; y++)
{
byte average = (byte)((ptr +
ptr +
ptr) / 3);
HistogramData += 1;
}
}
CalculateMean();
CalculateVariance();
}
public byte Mean;
private int Sum;
private int WeightedSum;
private void CalculateMean()
{
int sum = 0;
int weightedSum = 0;
for (int i = 0; i
256; i++)
{
sum += HistogramData;
weightedSum += HistogramData * i;
}
Sum = sum;
WeightedSum = weightedSum;
if (sum
0)
Mean = (byte)(weightedSum / sum);
else
Mean = 0;
}
生成黑白图像
public unsafe void RenderToBitmap(Bitmap bmp)
{
if (Data == null)
DoThresholding();
System.Drawing.Imaging.BitmapData outdata = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height),
System.Drawing.Imaging.ImageLockMode.WriteOnly, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
byte* ptr = (byte*)outdata.Scan0.ToPointer();
for (int x = bmp.Width - 1; x = 0; x--)
{
for (int y = bmp.Height - 1; y = 0; y--)
{
if (this.Data
0)
{
ptr;
ptr;
ptr;
}
else
{
ptr = 0;
ptr = 0;
ptr = 0;
}
}
}
bmp.UnlockBits(outdata);
}
考虑到图像处理速度问题,所有图像都锁定在内存中进行操作。这样比直接操作速度快了几倍。
#p#副标题#e#
网站去色怎么弄
每当遇到全国哀悼日,禁止娱乐活动,经常简单的网站灰色悼念,实现方法如下:
CSS代码: (插入到CSS文件的最顶端)
html { filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1); }
或者:
*{filter: Gray;}
HTML代码: (插入到页面HTML源码的《HEAD》和《/HEAD》之间)
《style》html{filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);}《/style》
或者:
《style type="text/css"》 html { FILTER: gray }《/style》css构架,如果让整个页面都变黑白 ,加到css样式里
body{filter:Gray;}
如果光让图片变黑白
img{filter:Gray;}
如果只让指定图片比如logo灰色
现在css里建个样式如
.huise{filter:Gray;}
然后给图片或表格指定该样式
《img src=logo.gif class="huise"》
或把要灰色的不用用 《div class="huise"》《/div》包括起来html { filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1); }
这段代码可以变网页为黑白,将代码加到CSS最顶端就可以实现素装。
如果网站没有使用CSS,可以在网页/模板的HTML代码《head》和《/head》 之间插入:
《style》
html{filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);}
《/style》
有一些网站可能使用这个css 不能生效,是因为网站没有使用最新的网页标准协议
***隐藏网址***
***隐藏网址***
请将网页最头部的《html》替换为以上代码。
有一些网站FLAS***的颜色不能被CSS滤镜控制,可以在FLASH代码的《object …》和《/object》之间插入:
《param value="false" name="menu"/》
《param value="opaque" name="wmode"/》
最简单的把页面变成灰色的代码是在head 之间加
《style type="text/css"》
html {
FILTER: gray
}
《/style》
今天各大网站首页同时变黑白,在技术上是怎么做的
一般的网站都是在一定框架基础上组合而成的,每个框架或版块都有一个相对统一的风格如字体大小颜色表格样式等,这些相对统一的格式可以写到一个css文件中进行控制,只要在《haed》调用就可以。这样就可以做到整个版面样式的统一。
ai设计网页怎么把页面铺色
ai设计网页怎么把页面铺色做成黑白。如今,人们对网页设计网页设计的要求越来越高,网站制作的网站效果越来越不理想。如何让它变得美观更具吸引力呢?在制作一个合适的网页时,需要遵循以下三个原则。一、网站整体风格网站风格也是企业给网站的主要展现形式。这一点在企业网站设计中尤为突出。首先,要和谐,不要杂乱无章。一个好的网站是由很多元素组成的,其元素越多,就越凌乱;其次,要突出重点,让访问者能够在众多的网站中顺利找到自己想要的内容,最后,要有主次之分,让访问者更容易快速浏览与理解。二、网站设计中的配色与结构对于网站设计来说,配色对于我们网站整体具有非常重要的影响。色彩不仅仅是区分品牌与行业的视觉语言,还能够给客户带来视觉上的美感。
怎么样把图处理成黑白
1. 怎么样把图处理成黑白
用ADOBE PHOTOSHOP 方法有几种,各自出来的效果都不同! 方法一 使用菜单栏里的图象/模式/灰度使图片直接变成单色; 方法二 使用菜单栏里的图象/模式/LAB颜色使图片变成LAB色彩模式后,再打开通道窗口,把其中的a、b通道扔掉,只剩下明度通道,此时图片的色彩模式会自动切换成多通道色彩模式,此时再从菜单栏里选择图象/模式/灰度就而已把图片变成单色了; 方法三 按快捷键Ctrl + U打开色相/饱和度窗口,把饱和度一栏调为-100,此时图片就会成为黑白图片了; 方法四 使用菜单栏里的图象/调整/去色使图片直接变成黑白! 以上四种方法都可以做到你想要的效果,不过各自在某些细节上可以会有一定的差异,视各人需要选择吧,另外提醒一点,彩色图片转成单色图片后对比度会降低不少,因此最好能对对比度再进行适当的调整! 点击土层下面的小圆形,按“通道混合器”,左下角选“单色”,可以调出不同的明暗关系,又不会损害原图。
2. 怎样把图片处理成一半黑白一般是原来的色彩
建议你用美图大师或者美图秀秀这2个软件都有图片处理器功能 可以把图片变成你想要的效果,美图秀秀是一款很好用的国产免费图片处理软件,和大师都差不多.软件的操作和程序相对于专业图片处理软件如光影魔术手、Photoshop比较简单。
美图秀秀独有的图片特效、人像美容、可爱饰品、文字模板、智能边框、魔术场景、自由拼图、摇头娃娃等功能可以让用户短时间内做出影楼级照片。美图秀秀还能做非主流闪图、非主流图片、QQ表情、QQ头像、QQ空间图片等。
不用学习就会用,比PS简单100倍! 当然也有LZ 说的图片一般黑一半白了 只要熟悉使用 就可以 达到你想要的效果 希望能给你点帮助。
3. 如何将一张图片处理成用黑白位图显示
ps具体操作如下:
方法一:
1.在ps中打开所要修改的图片
2.点击图像——模式——灰度,弹出对话框按确定
3.点击滤镜——像素化——色彩半调,弹出对话框,大小改为4(最小值),把四个通道全都改为45,按确定完成。双击工具栏中的放大镜,调整到原始比例。
方法二:
1.点击图像——模式——灰度,弹出对话框按确定
2.点击图像——模式——灰度,弹出对话框,方法调为:半调网屏。按确定即可。
得到的效果是不是你想要的效果,如果不是可以追问
希望对你有帮助!
网站黑白
为方便站点哀悼,特提供素装代码,以表哀悼。以下为全站CSS代码。
html { filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1); }
使用方法:这段代码可以变网页为黑白,将代码加到CSS最顶端就可以实现素装。建议全国站长动起来。为在地震中遇难的同胞哀悼。
如果网站没有使用CSS,可以在网页/模板的HTML代码《head》和《/head》 之间插入:
《style》
html{filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);}
《/style》
有一些站长的网站可能使用这个css 不能生效,是因为网站没有使用最新的网页标准协议
***隐藏网址***
***隐藏网址***
请将网页最头部的《html》替换为以上代码。
有一些网站FLAS***的颜色不能被CSS滤镜控制,可以在FLASH代码的《object …》和《/object》之间插入:
《param value="false" name="menu"/》
《param value="opaque" name="wmode"/》
最简单的把页面变成灰色的代码是在head 之间加《style type="text/css"》
html {
FILTER: gray
}
《/style》
一般的discuz论坛在 你的控制css 文件下修改/images/header/header.css 这个文件
效果可见 www.21cu.com/yingshi 只是首页做了
现在的网页一下全变黑白了,怎么做的呀.
是CSS滤镜,只在IE下有效果。
全国哀悼日 网站灰黑色CSS滤镜代码
根据国务院文件,5.19-5.21为全国哀悼日,在此期间,全国和各驻外机构下半旗志哀,停止公共娱乐活动,外交部和我国驻外使领馆设立吊唁簿。5月19日14时28分起,全国人民默哀3分钟,届时汽车、火车、舰船鸣笛,防空警报鸣响。 很多草根网站都将整站换成素装。并建议中国所有站点更换为素装。 国务院决定5月19日至21日为全国哀悼日
——————————————————————————
为方便站点哀悼,特提供css滤镜代码,以表哀悼。以下为全站CSS代码。复制内容到剪贴板代码:
html { filter:progidXImageTransform.Microsoft.BasicImage(grayscale=1); } 使用方法:这段代码可以变网页为黑白,将代码加到CSS最顶端就可以实现素装。建议全国站长动起来。为在地0震.中遇难的同胞哀悼。
如果网站没有使用CSS,可以在网页/模板的HTML代码《head》和《/head》 之间插入::复制内容到剪贴板代码:
《style》
html{filter:progidXImageTransform.Microsoft.BasicImage(grayscale=1);}
《/style》 有一些站长的网站可能使用这个css 不能生效,是因为网站没有使用最新的网页标准协议复制内容到剪贴板代码:
***隐藏网址***
***隐藏网址***
有一些网站FLAS***的颜色不能被CSS滤镜控制,可以在FLASH代码的《object …》和《/object》之间插入:复制内容到剪贴板代码:
《param value="false" name="menu"/》
《param value="opaque" name="wmode"/》 最简单的把页面变成灰色的代码是在head 之间加复制内容到剪贴板代码:
《style type="text/css"》
html {
FILTER: gray
}
《/style》另在哀悼日或遇难的新闻,所有专题和主题 图片上不能使用红色标题。
更多文章:
安徽疫情最新通知(2022宿州砀山县客运交通疫情管控通告(安徽宿州疫情最新通知2021))
2026年4月1日 09:20
公司开发个网站需要考虑哪些因素,公司开发个网站需要考虑哪些因素?
2026年4月1日 09:00








