如何调整图片亮度和对比度?

c120 2007-08-21 12:26:03
如何调整图片亮度和对比度?
...全文
3794 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiemlirenjie 2010-04-10
  • 打赏
  • 举报
回复

增加亮度的思路是:先获取图片各像素的R、G、B值,然后将这三个值分别加上同一个值,所得的和分别赋给R、G、B。减小亮度的思路就是减去相同的值。代码如下:

Private Sub illup_Click()


Dim pi&
Dim x, y
Dim average As Integer
Dim red, green, blue As Integer

Picture2.Picture = Picture1.Picture
Picture2.Refresh
Label3.Visible = True
DoEvents
xx = Picture2.ScaleWidth
yy = Picture2.ScaleHeight
For x = 0 To xx
For y = 0 To yy

pi = Picture2.Point(x, y)

red = (pi& Mod 256) + a '增加亮度,加一个正数;若要降低亮度,则减去同一个正数
green = (((pi& And &HFF00) / 256&) Mod 256&) + a
blue = ((pi& And &HFF0000) / 65536) + a

average = (red + green + blue) / 3

red = red + average
green = green + average
blue = blue + average

If red > 255 Then red = 255
If red < 0 Then red = 0
If green > 255 Then green = 255
If green < 0 Then green = 0
If blue > 255 Then blue = 255
If blue < 0 Then blue = 0


Picture2.PSet (x, y), RGB(red, green, blue)

Next y
DoEvents
Next x
Picture2.Refresh
Label3.Visible = False

End Sub


调整对比度的思路:让颜色深的更深,让颜色浅的更浅。一个像素的取值在0-255。0为黑,255为白。大于最大值255的一半(即127)且小于255就可以视为是浅色,而介于0-127就认为是深色。浅色的像素加上一个值a,深色的像素减去一个值a,就可以达到“让颜色深的更深,让颜色浅的更浅”的效果。当然,加或减的值可以不相同,要自己去调试。下面是调整对比度的代码:

Private Sub contrast_Click()


Dim pi&
Dim x, y
Dim rate As Integer
Dim red, green, blue As Integer

Picture2.Picture = Picture1.Picture
Picture2.Refresh
Label3.Visible = True
DoEvents
xx = Picture2.ScaleWidth
yy = Picture2.ScaleHeight
For x = 0 To xx
For y = 0 To yy

pi& = Picture2.Point(x, y)

rate = 127 * (setbar.Value - 50) / 100

red = pi& Mod 256
green = ((pi& And &HFF00) / 256&) Mod 256&
blue = (pi& And &HFF0000) / 65536

If red > 127 Then red = red + rate
If red < 127 Then red = red - rate

If red > 255 Then red = 255
If red < 0 Then red = 0

If green > 127 Then green = green + rate
If green < 127 Then green = green - rate

If green > 255 Then green = 255
If green < 0 Then green = 0


If blue > 127 Then blue = blue + rate
If blue < 127 Then blue = blue - rate

If blue > 255 Then blue = 255
If blue < 0 Then blue = 0

Picture2.PSet (x, y), RGB(red, green, blue)

Next y
DoEvents
Next x
Picture2.Refresh
Label3.Visible = False

End Sub

熊孩子开学喽 2010-02-01
  • 打赏
  • 举报
回复
楼上怎么专门挑陈年老帖顶啊
meiZiNick 2008-05-01
  • 打赏
  • 举报
回复
不知,帮顶
knowledge_Is_Life 2008-04-30
  • 打赏
  • 举报
回复
这个简单啊,网上搜一下就得到答案了.
东方之珠 2007-09-28
  • 打赏
  • 举报
回复
VB图像处理之图像的亮度对比度调整:
http://www.yesky.com/54/1903054.shtml
东方之珠 2007-09-28
  • 打赏
  • 举报
回复
VB图像处理之图像的亮度对比度调整

http://www.sqlsky.com/vb/070812/25195/
  • 打赏
  • 举报
回复
一定是 和&h88比较么? 为啥不是 &h80呢?
  • 打赏
  • 举报
回复
没研究。而且同样不喜欢看那些啰嗦文章。作为练习和试验的话,可以像lorl2说的,简单一点就可以了。亮度不说了,对比度可以考虑对R、G、B三个值分别与&h88进行比较,如果小于,则再减去一个值,使其加深,如果大于,则再加上一个值,使其加强。总之就是暗的更暗,艳的更艳。
ychwgl168 2007-09-27
  • 打赏
  • 举报
回复
问一下:
vb 中使用MMControl播音的时候,资源被占用了,其他程序模块都需要等待播音结束才运行,如何解决
嗷嗷叫的老马 2007-08-23
  • 打赏
  • 举报
回复
.....帮顶一下
lorl2 2007-08-22
  • 打赏
  • 举报
回复
不会了,哈哈
lorl2 2007-08-22
  • 打赏
  • 举报
回复
亮度嘛,就是将一个像素的R、G、B分离出来,分别加(减)同一个值。
对比度嘛,
c120 2007-08-21
  • 打赏
  • 举报
回复
好杂,没看明白,能简单表达一下吗?谢谢
laviewpbt 2007-08-21
  • 打赏
  • 举报
回复
http://blog.csdn.net/wallescai/archive/2005/01/02/237326.aspx

我在http://www.vbgood.com/viewthread.php?tid=53287&extra=page%3D2也有给一个实现的过程.
c120 2007-08-21
  • 打赏
  • 举报
回复
高分啊,谁能帮我一下
熊孩子开学喽 2007-08-21
  • 打赏
  • 举报
回复
能简单表达一下的话还写那么多干吗?你以为别人都撑了么?都把原理写得很清楚了,你自己偷懒不像看,那怎么行?

809

社区成员

发帖
与我相关
我的任务
社区描述
VB 多媒体
社区管理员
  • 多媒体
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧