设为首页收藏本站language 语言切换
查看: 1464|回复: 0
收起左侧

用vb.net实现图片颜色替换-让图片得“病”

[复制链接]
发表于 2010-2-25 10:29:26 | 显示全部楼层 |阅读模式
<p >  看了这个标题你是否会觉得很怪异!其实一点也不要感到惊讶,为什么呢?因为我有切身感受。<p >  前几天我到朋友家品茶,听见朋友在抱怨,他说:"我保存在电脑中的图片全部被改了,图片中的红色全部都被其他的颜色所替换,而且还在图片上加上了很多英文字,我最近并没有使用过图片修改软件,真是倒霉!"。听了朋友的抱怨后,我感到这肯定是一种新的病毒,但朋友说他用了很多杀毒软件,都没有查到这种病毒。到了这种地步我只好一边安慰他一边帮他重装系统。<p >  回去后我仔细的思考这种病毒的运行原理,最后用vb.net模拟出了这种病毒。<p >  其实这种病毒的原理很简单;就是以时间为条件,在不同的时间用不同的颜色替换红色。并且用线条画出英文字母。将改动后的图片保存为另一个文件,把原来的图片删除,将新图片的名字改为原来的文件名字进行保存。<p >  下面是用vb.net模拟出来的代码:<p >(在调试此程序是请先准备一幅用红色的图片)<p >              <img  src="http://www.hh010.com/upload_files/article/244/9_qkqmoc139004.jpg"><p >                  图片1<p ><ccid_nobr><table width="550" border="1" cellspacing="0" cellpadding="2" bordercolorlight = "black" bordercolordark = "#FFFFFF" align="center"><tr><td bgcolor="e6e6e6" class="code"><pre><ccid_code>rivate Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click      Dim filename As String      filename = &quot;F:\Documents and Settings\Administrator\My Documents\red.bmp&quot;      '这是我的图片文件地址,你可以改为其它地址或文件。      Dim bmp As New Bitmap(&quot;F:\Documents and Settings\Administrator\My Documents\red.bmp&quot;)      '用一个图片实例化bitmap对象      Dim bmpheght As Integer      Dim bmpw As Integer      Dim i, k As Integer      Dim cloAs      bmpheght = CType(bmp.Height, Integer)'获得图片的高      bmpw = CType(bmp.Width, Integer)'获得图片的宽      Label1.Text = bmpheght'显示图片的高      Button1.Text = bmpw'显示图片的宽      For i = 0 To bmpw - 1            For k = 0 To bmpheght - 1                cloAs = bmp.GetPixel(i, k).Name.ToString            '获得象素点的颜色,返回颜色的16制代码                If cloAs = &quot;ffff0000&quot; Then'ffff0000             '是红色的16制代码,对于其他的颜色代码请见msdn。                    bmp.SetPixel(i, k, System.Drawing.Color.Blue)            '用蓝色替换红色                End If            Next        Next        Dim nfilename As String        nfilename = &quot;F:\Documents and Settings\Administrator\My Documents\red1.bmp&quot;         bmp.Save(nfilename) '将改变后的文件保存为一个新文件        bmp.Dispose()'释放bitmap对象        IO.File.Delete(filename)'删除原来的文件        Dim newbmp As New Bitmap(nfilename)        newbmp.Save(filename)'将新文件改名为原来的文件        newbmp.Dispose()        IO.File.Delete(nfilename)'删除新文件        Debug.WriteLine(&quot;end&quot;)End Sub</ccid_code></pre></td></tr></table></ccid_nobr><p >                 <img  src="http://www.hh010.com/upload_files/article/244/9_4m9a0n139005.jpg"><p >                  图片2-处理后效果<p >  这段代码的功能是用蓝色替换图片中的红色,因为这只是一篇技术探讨文章,所以对于在图片中加入英文字功能和以时间为条件用不同颜色替换红色的时间功能做了保留。如果读者有兴趣,可以自己研究,这两项功能并不复杂。<p ><center>(责任编辑:<ccid_nobr>西门吹雪</ccid_nobr>)</center><p align="center"></p></p>
您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-4-12 14:40 , Processed in 0.142099 second(s), 23 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表