一 : 新一代小米插线板正式发布 功能更加强大 触控开关
昨天晚上,小米插线板的研发方青米科技宣布将于明天上午9点推出新一代小米插线板,并表示这是"进化/归来"。这意味着,新一代小米插线板在功能上应该会更全面。
另外,考虑到小米智能家庭将在明天上午众筹一款新品,而且和电有关,所以这次众筹的主角很有可能就是青米科技这款全新的插线板。
如昨晚的预告,今天上午,小米生态链企业青米科技今天上午正式公布了新一代小米插线板,功能更加强大,号称“不变的颜值,更智能的插线板”。
此次公布的新款小米插线板是5孔位版本,不带USB接口(USB口版本预计很快就会发布)。外观方面和上一代产品类似,但原来的物理电源开关键变成了圆形(触控开关),插线板边缘也似乎更加圆润。
功能方面,新款小米插线板支持过载保护,通过mcu判断功耗大小,当功耗超过阀值,立即断开继电器,起到过载保护的作用。排除故障后,可手动回复或通过APP恢复正常工作状态。
此外,新插线板还支持漏电监测、节能、触控开关、定时计时、电力计量、自动学习等功能。
目前,新款小米插线板的售价、开售日期暂未公布。上一代的售价分别为39元、49元(USB版),大家猜猜新款会卖多少钱?
相关阅读:小米新品39元插线板和49元有什么区别? 小米39元插线板拆解图
![触控开关:新版小米插线板发布!功能更强大了](http://p.61k.com/cpic/ac/02/a86e2be9c7e34089f9f3454ea76d02ac.jpg)
![触控开关:新版小米插线板发布!功能更强大了](http://p.61k.com/cpic/8a/6e/9e9890dc7bfdeb5e75b9595886dc6e8a.jpg)
二 : PhotoShop的自动色阶功能的实现
示例工程:http://files.cnblogs.com/laviewpbt/AutoLevel.rar.
关于自动色阶,用过PS的人应该都对他有所了解,在调整图像的视觉效果上这个调整滤镜的使用频率也是相当高的。[www.61k.com]关于其实现原理,网络上亦已经有不少人对其进行了探讨和研究,这里只是再简单的给有兴趣的人复习一下。
首先计算出一副图像的直方图,也就是每个色阶(0~255)所对应的像素点的个数,然后沿0阶->255阶方向找到最小色阶点Min(所谓最小色阶点即第一个在某一阶上有点数出现的阶数,如在0阶时为0点,1阶时为0点,2阶也为0点,3阶为10点,4阶为5点,...,那么最小点应为3阶), 同样最大值则是反方向从255阶开始第一个在某一阶上有点数出现的阶数Max.一般来讲,对以彩色图像最小色阶点=0,而最大色阶点为255。然后从最小色阶点开始选择整个图像总点数的5.5%的那一点做为新的最小点NewMin,再沿相反方向(即255阶->0阶方向)选择整个图像总点数的5.5%的那一点做为新的最大点NewMax,计两者之差为Differ,则每以原始像素点对应的新值可以按如下算法计算:
If Color <= NewMin Then
Color = 0
ElseIf Color >= NewMax Then
Color = 255
Else
Color = (Color - NewMin) * 255 / Differ
End If
这里我们假设你已经加载了一副24位真彩色图像到一个叫做Pic的图像容器中,并且为了方便我们设置其AutoRedraw为True,现在我们要对这副图像进行自动色阶的调整,除此之外,我们还希望处理的速度越快越好,首先我们请VB自带的Point和Pset函数站到一边去,他们处于图像处理的最低层(注意,不是最底层哦),接着,我们还要放弃对SetPixel和GetPixel的钟爱,因为他们和Point之流是一丘之貉。下一步,将目光瞄准GetBitmapBits和SetBitmapBits,哇,好名字,确实,这两个函数功能强大,但是我们不需要他们,因为他们是设备相关的,我不希望在我机器上能正常运行的程序在别人电脑上出现莫名其妙的效果。OK,还是请设备无关的函数GetDIBits,SetDIBits出山吧。关于这两个函数的使用方法,我不想详谈,但是你们可以记住,我们调用他们只是想快速的获得图像的点阵数据而已。
为了大家理解方便,这里我们设置图像的数据为一二维的RGBQUAD结构体,该结构体由四个分量组成,分别表示了颜色空间的Red,Green,Blue,Alpha分量(有的地方最后一个变量名为Reserved,但这不妨碍我们)。其中的Alpha因为VB的StdPicture对象不支持,我们不予以关心。
好了,下面给出获取PictureBox控件中图像数据的函数,以及怎么样把图像数据绘制到PictureBox中去。
模块中的代码:
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/34/cf/74ac7e2cc68f0544e2b5ecbbca6acf34.jpg)
DIB版本自动色阶
Option Explicit
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
'***************************模仿PS的自动色阶功能*********************************
'** 作者 : laviewpbt
'** 开发时间 : 2008.7.1
'** 最后修改时间 : 2008.8.28
'** 联系方式 : QQ:33184777
'** E-MAIL : laviewpbt@sina.com
'** All Rights Resered
'***********************************************************************
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
Public Type BITMAPFILEHEADER
扩展:photoshop自动色阶 / photoshop色阶 / photoshop色阶在哪
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
bfType As Integer
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
bfSize As Long
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
bfReserved1 As Integer
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
bfReserved2 As Integer
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
bfOffBits As Long
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
End Type
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
Public Type Bitmap
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
bmType As Long
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
bmWidth As Long
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
bmHeight As Long
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
bmWidthBytes As Long
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
bmPlanes As Integer
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
bmBitsPixel As Integer
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
bmBits As Long
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
End Type
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
Public Type BITMAPINFOHEADER '40 bytes
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
biSize As Long 'BITMAPINFOHEADER结构的大小
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
biWidth As Long
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
biHeight As Long
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
biPlanes As Integer '设备的为平面数,现在都是1
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
biBitCount As Integer '图像的颜色位图
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
biCompression As Long '压缩方式
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
biSizeImage As Long '实际的位图数据所占字节
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
biXPelsPerMeter As Long '目标设备的水平分辨率
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
biYPelsPerMeter As Long '目标设备的垂直分辨率
扩展:photoshop自动色阶 / photoshop色阶 / photoshop色阶在哪
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
biClrUsed As Long '使用的颜色数
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
biClrImportant As Long '重要的颜色数。如果该项为0,表示所有颜色都是重要的
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
End Type
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
Public Type RGBQUAD '只有bibitcount为1,2,4时才有调色板
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
Blue As Byte '蓝色分量
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
Green As Byte '绿色分量
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
Red As Byte '红色分量
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
Reserved As Byte '保留值
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
End Type
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
Public Type BITMAPINFO
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
bmiHeader As BITMAPINFOHEADER
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
bmiColors As RGBQUAD
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
End Type
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
Public Const BI_RGB = 0&
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
Public Const DIB_RGB_COLORS = 0&
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
Public Const IMAGE_BITMAP = 0&
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/5f/1b/30debead8d3ab223f791a839de3f1b5f.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/34/cf/74ac7e2cc68f0544e2b5ecbbca6acf34.jpg)
Public Declare Function GetDIBits()Function GetDIBits Lib "gdi32" (ByVal aHDC As Long, ByVal hBitmap As Long, ByVal nStartScan As Long, ByVal nNumScans As Long, lpBits As Any, lpBI As BITMAPINFO, ByVal wUsage As Long) As Long
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/10/45/a003d522d15badc723fca9c163fb4510.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/0c/a9/b15a43cade19be491ac0d34badafa90c.jpg)
Public Declare Function GetGDIObject()Function GetGDIObject Lib "gdi32.dll" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, ByRef lpObject As Any) As Long
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/10/45/a003d522d15badc723fca9c163fb4510.jpg)
扩展:photoshop自动色阶 / photoshop色阶 / photoshop色阶在哪
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/0c/a9/b15a43cade19be491ac0d34badafa90c.jpg)
Public Declare Function SetDIBits()Function SetDIBits Lib "gdi32" (ByVal Hdc As Long, ByVal hBitmap As Long, ByVal nStartScan As Long, ByVal nNumScans As Long, lpBits As Any, lpBI As BITMAPINFO, ByVal wUsage As Long) As Long
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/10/45/a003d522d15badc723fca9c163fb4510.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/0c/a9/b15a43cade19be491ac0d34badafa90c.jpg)
Public Declare Function GetTickCount()Function GetTickCount Lib "kernel32" () As Long
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/10/45/a003d522d15badc723fca9c163fb4510.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/0c/a9/b15a43cade19be491ac0d34badafa90c.jpg)
Public Declare Sub CopyMemory()Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (lpDst As Any, lpSrc As Any, ByVal ByteLength As Long)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/10/45/a003d522d15badc723fca9c163fb4510.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/0c/a9/b15a43cade19be491ac0d34badafa90c.jpg)
Public Declare Function VarPtrArray()Function VarPtrArray Lib "msvbvm60.dll" Alias "VarPtr" (ByRef Ptr() As Any) As Long
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
'得到图像数据
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/10/45/a003d522d15badc723fca9c163fb4510.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/0c/a9/b15a43cade19be491ac0d34badafa90c.jpg)
Public Function GetPicData()Function GetPicData(Pic As PictureBox, PicData() As RGBQUAD) As Boolean '读取位图数据
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Dim Bmp As Bitmap, BmpInfo As BITMAPINFO
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
GetGDIObject Pic.Picture.Handle, Len(Bmp), Bmp '取得对指定对象进行说明的一个结构,
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
'hobject为位图,刷子等的句柄,
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
'count欲取回的字节数。通常是由lpObject定义的那个结构的长度
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
With BmpInfo.bmiHeader
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
.biSize = Len(BmpInfo.bmiHeader)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
.biWidth = Bmp.bmWidth
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
.biHeight = -Bmp.bmHeight 'BMP位图默认的扫描方式是从下到上,
扩展:photoshop自动色阶 / photoshop色阶 / photoshop色阶在哪
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
'这与GDI的坐标系统相反,为方便,这里
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
'改为-值,则取得数据就是以左上角为起点
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
.biPlanes = 1
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
.biBitCount = 32 '32位位图,默认情况下Windows不会处理最高8位
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
'可以将它作为自己的Alpha通道,取为32位位图,
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
'虽然多占用了点内存,但是避免了扫描行宽度问题,代码易于理解
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
.biCompression = BI_RGB '无压缩
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
.biSizeImage = Bmp.bmWidth * Bmp.bmHeight * 4
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
End With
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
ReDim PicData(0 To Bmp.bmWidth - 1, 0 To Bmp.bmHeight - 1) As RGBQUAD
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
GetDIBits Pic.Hdc, Pic.Image, 0, Bmp.bmHeight, PicData(0, 0), BmpInfo, DIB_RGB_COLORS
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/61/da/38f687a62c00cf0601aaee88f189da61.jpg)
End Function
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
'根据数组显示图像
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/10/45/a003d522d15badc723fca9c163fb4510.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/0c/a9/b15a43cade19be491ac0d34badafa90c.jpg)
Public Sub SetPicData()Sub SetPicData(Pic As PictureBox, PicData() As RGBQUAD) '显示位图
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Dim Bmp As Bitmap, BmpInfo As BITMAPINFO
扩展:photoshop自动色阶 / photoshop色阶 / photoshop色阶在哪
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
GetGDIObject Pic.Picture.Handle, Len(Bmp), Bmp '取得对指定对象进行说明的一个结构,hobject为位图,刷子等的句柄,count欲取回的字节数。通常是由lpObject定义的那个结构的长度
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
With BmpInfo.bmiHeader
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
.biSize = Len(BmpInfo.bmiHeader)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
.biWidth = Bmp.bmWidth
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
.biHeight = -Bmp.bmHeight 'BMP位图默认的扫描方式是从下到上,
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
'这与GDI的坐标系统相反,为方便,这里
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
'改为-值,则取得数据就是以左上角为起点
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
.biPlanes = 1
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
.biBitCount = 32 '32位位图,默认情况下Windows不会处理最高8位
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
'可以将它作为自己的Alpha通道,取为32位位图,
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
'虽然多占用了点内存,但是避免了扫描行宽度问题,代码易于理解
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
.biCompression = BI_RGB '无压缩
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
.biSizeImage = Bmp.bmWidth * Bmp.bmHeight * 4
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
End With
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
SetDIBits Pic.Hdc, Pic.Image, 0, Bmp.bmHeight, PicData(0, 0), BmpInfo, DIB_RGB_COLORS
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Pic.Refresh
扩展:photoshop自动色阶 / photoshop色阶 / photoshop色阶在哪
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/36/1d/5f3c91a330d5792985cf0f591b9d1d36.jpg)
End Sub
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
以上的SetPicData和GetPicData分别为图像数据显示和读取函数,这里的.biBitCount = 32选择为32位虽然加大了内存的占用量,但是确在一定程度上方便了编程,因为Windows下的位图对象是要求扫描行对齐的,也就是说一行像素的占用字节数必须是4的倍数,之所以这样,我想是因为32位的Windows系统处理4个字节的速度最快吧。
窗体中有三个按钮一个图片框,图片框中请在设计的时候加载一副图像及设置相关参数。
窗体代码
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/34/cf/74ac7e2cc68f0544e2b5ecbbca6acf34.jpg)
DIB版本自动色阶
Option Explicit
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
Private m_Width As Long '打开的图像的宽度
Private m_Height As Long '打开的图像的高度
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/5f/1b/30debead8d3ab223f791a839de3f1b5f.jpg)
Private Sub Form_Load()Sub Form_Load()
m_Width = Pic.ScaleWidth
m_Height = Pic.ScaleHeight
End Sub
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/5f/1b/30debead8d3ab223f791a839de3f1b5f.jpg)
Private Sub CmdOpen_Click()Sub CmdOpen_Click()
CommonDialog.FileName = ""
CommonDialog.Filter = "All Suppported Images |*.bmp;*.jpg;*.gif;|BMP Images|*.bmp|JPG Images|*.jpg|Gif Images|*.gif"
CommonDialog.ShowOpen
If CommonDialog.FileName <> "" Then
Pic.Picture = LoadPicture(CommonDialog.FileName)
m_Width = Pic.ScaleWidth
m_Height = Pic.ScaleHeight
扩展:photoshop自动色阶 / photoshop色阶 / photoshop色阶在哪
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
End If
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/36/1d/5f3c91a330d5792985cf0f591b9d1d36.jpg)
End Sub
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/5f/1b/30debead8d3ab223f791a839de3f1b5f.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/34/cf/74ac7e2cc68f0544e2b5ecbbca6acf34.jpg)
Private Sub CmdDib_Click()Sub CmdDib_Click()
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Dim T As Long
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Dim PicData() As RGBQUAD
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Dim i As Long, j As Long
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Dim HistRed(255) As Long, HistGreen(255) As Long
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Dim HistBlue(255) As Long
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Dim DiffRed As Long, DiffGreen As Long
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Dim DiffBlue As Long, Diff As Long
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Dim SpeedRed(255) As Byte, SpeedGreen(255) As Byte
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Dim SpeedBlue(255) As Byte, Speed(255) As Byte
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Dim Sum As Long, Integral As Long
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Dim Min As Long, Max As Long
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Dim NewMin As Long, NewMax As Long
扩展:photoshop自动色阶 / photoshop色阶 / photoshop色阶在哪
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
T = GetTickCount
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
GetPicData Pic, PicData
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = 0 To m_Width - 1
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For j = 0 To m_Height - 1
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
HistRed(PicData(i, j).Red) = HistRed(PicData(i, j).Red) + 1
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
HistGreen(PicData(i, j).Green) = HistGreen(PicData(i, j).Green) + 1
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
HistBlue(PicData(i, j).Blue) = HistBlue(PicData(i, j).Blue) + 1
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = 0 To 255
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
If HistRed(i) <> 0 Then
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Min = i
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Exit For
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
End If
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = 255 To 0 Step -1
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
If HistRed(i) <> 0 Then
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Max = i
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Exit For
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
End If
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Sum = 0
扩展:photoshop自动色阶 / photoshop色阶 / photoshop色阶在哪
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = Min To Max
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Sum = Sum + HistRed(i)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Integral = 0
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = Min To Max
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Integral = Integral + HistRed(i)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
If Integral >= Sum * 0.005 Then
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
NewMin = i
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Exit For
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
End If
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = NewMin + 1 To Max
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Integral = Integral + HistRed(i)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
If Integral > Sum * 0.995 Then
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
NewMax = i
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Exit For
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
End If
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = 0 To 255
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
If i <= NewMin Then
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
SpeedRed(i) = 0
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
ElseIf i >= NewMax Then
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
SpeedRed(i) = 255
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Else
扩展:photoshop自动色阶 / photoshop色阶 / photoshop色阶在哪
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
SpeedRed(i) = (i - NewMin) / (NewMax - NewMin) * 255
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
End If
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/10/45/a003d522d15badc723fca9c163fb4510.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/0c/a9/b15a43cade19be491ac0d34badafa90c.jpg)
/**/''''''''''''''''''''''''''''
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = 0 To 255
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
If HistGreen(i) <> 0 Then
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Min = i
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Exit For
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
End If
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = 255 To 0 Step -1
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
If HistGreen(i) <> 0 Then
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Max = i
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Exit For
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
End If
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Sum = 0
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = Min To Max
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Sum = Sum + HistGreen(i)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Integral = 0
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = Min To Max
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Integral = Integral + HistGreen(i)
扩展:photoshop自动色阶 / photoshop色阶 / photoshop色阶在哪
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
If Integral >= Sum * 0.005 Then
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
NewMin = i
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Exit For
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
End If
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = NewMin + 1 To Max
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Integral = Integral + HistGreen(i)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
If Integral > Sum * 0.995 Then
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
NewMax = i
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Exit For
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
End If
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = 0 To 255
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
If i <= NewMin Then
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
SpeedGreen(i) = 0
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
ElseIf i > NewMax Then
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
SpeedGreen(i) = 255
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Else
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
SpeedGreen(i) = (i - NewMin) / (NewMax - NewMin) * 255
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
End If
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/10/45/a003d522d15badc723fca9c163fb4510.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/0c/a9/b15a43cade19be491ac0d34badafa90c.jpg)
/**/'''''''''''''''''''''''''
扩展:photoshop自动色阶 / photoshop色阶 / photoshop色阶在哪
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = 0 To 255
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
If HistBlue(i) <> 0 Then
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Min = i
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Exit For
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
End If
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = 255 To 0 Step -1
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
If HistBlue(i) <> 0 Then
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Max = i
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Exit For
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
End If
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Sum = 0
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = Min To Max
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Sum = Sum + HistBlue(i)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Integral = 0
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = Min To Max
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Integral = Integral + HistBlue(i)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
If Integral >= Sum * 0.005 Then
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
NewMin = i
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Exit For
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
End If
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
扩展:photoshop自动色阶 / photoshop色阶 / photoshop色阶在哪
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = NewMin + 1 To Max
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Integral = Integral + HistBlue(i)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
If Integral > Sum * 0.995 Then
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
NewMax = i
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Exit For
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
End If
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = 0 To 255
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
If i <= NewMin Then
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
SpeedBlue(i) = 0
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
ElseIf i > NewMax Then
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
SpeedBlue(i) = 255
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Else
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
SpeedBlue(i) = (i - NewMin) / (NewMax - NewMin) * 255
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
End If
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = 0 To m_Width - 1
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For j = 0 To m_Height - 1
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
PicData(i, j).Red = SpeedRed(PicData(i, j).Red)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
PicData(i, j).Green = SpeedGreen(PicData(i, j).Green)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
PicData(i, j).Blue = SpeedBlue(PicData(i, j).Blue)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
扩展:photoshop自动色阶 / photoshop色阶 / photoshop色阶在哪
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
SetPicData Pic, PicData
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Me.Caption = "DIB方法用时" & GetTickCount - T & "毫秒"
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/36/1d/5f3c91a330d5792985cf0f591b9d1d36.jpg)
End Sub
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
好了,任务完成了,编译测试一下,勾选上所有的高级优化选项,测试图片大小选为1024*768,结果显示需要300ms,啊,如此慢,PS中一点就出来了效果呢,仔细分析下代码结构,似乎能够优化的地方已经基本优化了,那问题主要是那里呢。
其实,在这里耗时的几个主要过程有,读取图像数据、计算直方图、计算新的图像数据、显示图像数据,其中又以中间两个过程为主。我们采用了二维结构体数组,众所周知,访问数组需要计算数组元素在内存中位置,而维数越高,计算地址的公式就越复杂,因此,如果能采用一维数组的方式理论上是要比二维的速度有所改进的,这部分测试可以用读者自己完成。
这里要说的是另外一种提速的方法,模拟指针。其实这个词有很多人应该见过很多次了。虽然VB不直接支持指针的操作,但是借助于安全数据的相关特性,我们可以实现类似于C的指针(包括功能和代码的编辑方式).那么这里我们用模拟指针的好处很明显。第一:我们不需要调用GetDIBits这个函数,这意味着两种节省,其一是空间上的,GetDIBits函数需要你为他事先分配好一定的内存空间来保存图像数据。但是实际上,图像已经被我们加载入picturebox中,那么在内存中他肯定已经占用了空间,我们可以利用GetGDIObject这个函数配以适当的参数得到这个内存空间的首地址。其二是时间上的,分配空间和填充数据都是耗时的,虽然这个时间很少。第二,可以减少寻址的时间消耗, 用模拟指针的过程也需要寻址。但是适当的利用中间变量保存相关地址,可以节省大量的计算时间,比如你用二维结构体保存图象数据,要得到图象在(i,j)点的红色和兰色和绿色数据,则要调用Data(i,j).Red和Data(i,j).Blue、Data(i,j).Green,这里三次调用则三次寻址,每次寻址的过程类似于下面的公式 j*width+i+Offset,一次乘法,二次加法,如果我们自己寻址,则用临时变量保存j*width+i值,则会减少计算量。对于大循环则更是明显。
好了说了这么多,下面给出代码。
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/34/cf/74ac7e2cc68f0544e2b5ecbbca6acf34.jpg)
模拟指针版自动色阶
'***************************自动色阶的模拟指针实现*********************************
'** 作者 : laviewpbt
'** 开发时间 : 2008.7.1
'** 最后修改时间 : 2008.8.28
'** 联系方式 : QQ:33184777
'** E-MAIL : laviewpbt@sina.com
'** Blog : http://www.cnblogs.com/laviewpbt/
'** All Rights Resered,转载请保留以上信息
'***********************************************************************
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/5f/1b/30debead8d3ab223f791a839de3f1b5f.jpg)
Private Sub CmdPointer_Click()Sub CmdPointer_Click()
扩展:photoshop自动色阶 / photoshop色阶 / photoshop色阶在哪
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Dim i As Long, j As Long
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Dim DataArr(0 To 3) As Byte, pDataArr(0 To 0) As Long
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Dim OldArrPtr As Long, OldpArrPtr As Long
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Dim LineAddBytes As Long, PixelAddBytes As Long
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Dim Bmp As Bitmap, T As Long
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Dim HistRed(255) As Long, HistGreen(255) As Long
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Dim HistBlue(255) As Long
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Dim DiffRed As Long, DiffGreen As Long
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Dim DiffBlue As Long, Diff As Long
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Dim SpeedRed(255) As Byte, SpeedGreen(255) As Byte
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Dim SpeedBlue(255) As Byte, Speed(255) As Byte
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Dim Sum As Long, Integral As Long
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Dim Min As Long, Max As Long
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Dim NewMin As Long, NewMax As Long
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
扩展:photoshop自动色阶 / photoshop色阶 / photoshop色阶在哪
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
T = GetTickCount
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
GetGDIObject Pic.Picture.Handle, Len(Bmp), Bmp
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
If Bmp.bmBits <> 0 Then '是个有效的图片
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
If Bmp.bmBitsPixel < 24 Then Exit Sub '不处理费真彩色图像,实际上,VB的picture属性也支持8位索引色的Bmp,如果你为了节省内存,采用改格式的图片,可以自行修改代码。
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
MakePoint VarPtrArray(DataArr), VarPtrArray(pDataArr), OldArrPtr, OldpArrPtr
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
PixelAddBytes = Bmp.bmBitsPixel / 8 '可为3,可为4
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
pDataArr(0) = Bmp.bmBits '首地址
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
LineAddBytes = Bmp.bmWidthBytes - (Bmp.bmBitsPixel \ 8) * Bmp.bmWidth '每个扫描行额外多出的字节
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For j = 1 To m_Height
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = 1 To m_Width
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
HistRed(DataArr(2)) = HistRed(DataArr(2)) + 1
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
HistGreen(DataArr(1)) = HistGreen(DataArr(1)) + 1
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
HistBlue(DataArr(0)) = HistBlue(DataArr(0)) + 1
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
pDataArr(0) = pDataArr(0) + PixelAddBytes
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
pDataArr(0) = pDataArr(0) + LineAddBytes
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
扩展:photoshop自动色阶 / photoshop色阶 / photoshop色阶在哪
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = 0 To 255
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
If HistRed(i) <> 0 Then
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Min = i
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Exit For
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
End If
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = 255 To 0 Step -1
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
If HistRed(i) <> 0 Then
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Max = i
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Exit For
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
End If
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Sum = 0
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = Min To Max
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Sum = Sum + HistRed(i)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Integral = 0
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = Min To Max
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Integral = Integral + HistRed(i)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
If Integral >= Sum * 0.005 Then
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
NewMin = i
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Exit For
扩展:photoshop自动色阶 / photoshop色阶 / photoshop色阶在哪
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
End If
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = NewMin + 1 To Max
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Integral = Integral + HistRed(i)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
If Integral > Sum * 0.995 Then
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
NewMax = i
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Exit For
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
End If
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = 0 To 255
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
If i <= NewMin Then
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
SpeedRed(i) = 0
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
ElseIf i >= NewMax Then
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
SpeedRed(i) = 255
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Else
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
SpeedRed(i) = (i - NewMin) / (NewMax - NewMin) * 255
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
End If
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/10/45/a003d522d15badc723fca9c163fb4510.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/0c/a9/b15a43cade19be491ac0d34badafa90c.jpg)
/**/''''''''''''''''''''''''''''
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = 0 To 255
扩展:photoshop自动色阶 / photoshop色阶 / photoshop色阶在哪
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
If HistGreen(i) <> 0 Then
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Min = i
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Exit For
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
End If
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = 255 To 0 Step -1
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
If HistGreen(i) <> 0 Then
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Max = i
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Exit For
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
End If
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Sum = 0
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = Min To Max
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Sum = Sum + HistGreen(i)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Integral = 0
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = Min To Max
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Integral = Integral + HistGreen(i)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
If Integral >= Sum * 0.005 Then
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
NewMin = i
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Exit For
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
End If
扩展:photoshop自动色阶 / photoshop色阶 / photoshop色阶在哪
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = NewMin + 1 To Max
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Integral = Integral + HistGreen(i)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
If Integral > Sum * 0.995 Then
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
NewMax = i
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Exit For
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
End If
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = 0 To 255
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
If i <= NewMin Then
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
SpeedGreen(i) = 0
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
ElseIf i > NewMax Then
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
SpeedGreen(i) = 255
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Else
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
SpeedGreen(i) = (i - NewMin) / (NewMax - NewMin) * 255
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
End If
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/10/45/a003d522d15badc723fca9c163fb4510.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/0c/a9/b15a43cade19be491ac0d34badafa90c.jpg)
/**/'''''''''''''''''''''''''
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = 0 To 255
扩展:photoshop自动色阶 / photoshop色阶 / photoshop色阶在哪
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
If HistBlue(i) <> 0 Then
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Min = i
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Exit For
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
End If
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = 255 To 0 Step -1
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
If HistBlue(i) <> 0 Then
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Max = i
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Exit For
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
End If
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Sum = 0
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = Min To Max
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Sum = Sum + HistBlue(i)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Integral = 0
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = Min To Max
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Integral = Integral + HistBlue(i)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
If Integral >= Sum * 0.005 Then
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
NewMin = i
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Exit For
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
End If
扩展:photoshop自动色阶 / photoshop色阶 / photoshop色阶在哪
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = NewMin + 1 To Max
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Integral = Integral + HistBlue(i)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
If Integral > Sum * 0.995 Then
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
NewMax = i
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Exit For
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
End If
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = 0 To 255
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
If i <= NewMin Then
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
SpeedBlue(i) = 0
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
ElseIf i > NewMax Then
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
SpeedBlue(i) = 255
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Else
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
SpeedBlue(i) = (i - NewMin) / (NewMax - NewMin) * 255
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
End If
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
pDataArr(0) = Bmp.bmBits
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For j = 1 To m_Height
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
For i = 1 To m_Width
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
DataArr(2) = SpeedRed(DataArr(2))
扩展:photoshop自动色阶 / photoshop色阶 / photoshop色阶在哪
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
DataArr(1) = SpeedGreen(DataArr(1))
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
DataArr(0) = SpeedBlue(DataArr(0))
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
pDataArr(0) = pDataArr(0) + PixelAddBytes
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
pDataArr(0) = pDataArr(0) + LineAddBytes
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Next
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
FreePoint VarPtrArray(DataArr), VarPtrArray(pDataArr), OldArrPtr, OldpArrPtr
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Pic.Refresh
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
End If
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Me.Caption = "模拟指针用时" & GetTickCount - T & "毫秒"
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/36/1d/5f3c91a330d5792985cf0f591b9d1d36.jpg)
End Sub
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/5f/1b/30debead8d3ab223f791a839de3f1b5f.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/34/cf/74ac7e2cc68f0544e2b5ecbbca6acf34.jpg)
Private Sub MakePoint()Sub MakePoint(ByVal DataArrPtr As Long, ByVal pDataArrPtr As Long, ByRef OldArrPtr As Long, ByRef OldpArrPtr As Long)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Dim Temp As Long, TempPtr As Long
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
CopyMemory Temp, ByVal DataArrPtr, 4 '得到DataArrPtr的SAFEARRAY结构的地址
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Temp = Temp + 12 '这个指针偏移12个字节后就是pvData指针
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
CopyMemory TempPtr, ByVal pDataArrPtr, 4 '得到pDataArrPtr的SAFEARRAY结构的地址
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
TempPtr = TempPtr + 12 '这个指针偏移12个字节后就是pvData指针
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
CopyMemory OldpArrPtr, ByVal TempPtr, 4 '保存旧地址
扩展:photoshop自动色阶 / photoshop色阶 / photoshop色阶在哪
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
CopyMemory ByVal TempPtr, Temp, 4 '使pDataArrPtr指向DataArrPtr的SAFEARRAY结构的pvData指针
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
CopyMemory OldArrPtr, ByVal Temp, 4 '保存旧地址
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/36/1d/5f3c91a330d5792985cf0f591b9d1d36.jpg)
End Sub
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/5f/1b/30debead8d3ab223f791a839de3f1b5f.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/34/cf/74ac7e2cc68f0544e2b5ecbbca6acf34.jpg)
Private Sub FreePoint()Sub FreePoint(ByVal DataArrPtr As Long, ByVal pDataArrPtr As Long, ByVal OldArrPtr As Long, ByVal OldpArrPtr As Long)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
Dim TempPtr As Long
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
CopyMemory TempPtr, ByVal DataArrPtr, 4 '得到DataArrPtr的SAFEARRAY结构的地址
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
CopyMemory ByVal (TempPtr + 12), OldArrPtr, 4 '恢复旧地址
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
CopyMemory TempPtr, ByVal pDataArrPtr, 4 '得到pDataArrPtr的SAFEARRAY结构的地址
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/18/1a/95a52a2f5b85ce34db7cd5da00e71a18.jpg)
CopyMemory ByVal (TempPtr + 12), OldpArrPtr, 4 '恢复旧地址
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/36/1d/5f3c91a330d5792985cf0f591b9d1d36.jpg)
End Sub
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
![色阶 PhotoShop的自动色阶功能的实现](http://p.61k.com/cpic/b5/77/24f04108a64599030eef5b44203877b5.jpg)
编译后测试,同样1024*768大小的图片,用模拟指针方法只需32ms左右,这个时间人是基本看不到延迟的。用VC的话也就在这个时间范围内。
怎么样,对VB的信心是不是又增加了不少,是的,VB一直是很优秀的。以前是,现在是,将来也是。
示例工程中有部分代码和本文中给出的不一致,但这不影响大局。
'******************************你的评论是我发表文章的极大动力**'**************************
'***************************欢迎和你讨论图像技术问题:QQ 33184777************************
扩展:photoshop自动色阶 / photoshop色阶 / photoshop色阶在哪
三 : 成功,源自突破现实
在当今世界,没有一个人在世界上或者国家中的地位是指定的,也不会有永久的王。正如一个企业应在逆境中努力进取以求生存,在顺境中也应有足够的忧患意识,想要成功,想要保持成功者的地位,就必需要突破现实。
每一个成功者,或者基本上所有的成功人士,都经历过大量挫折才走到今天这个地位,“每一个成功的企业家都会有他成功的地方,每个失败的企业家都有他失败的理由。”所有的成功者都引领着自己的团队不断突破,但如果其中一个人停下脚步,坐享安乐,那么失败就离他不远了。这个方面最有力的例子就是当年的市场霸主诺基亚公司,当年他曾经雄霸了整个电子产品市场,拥有无人可比的市场创新能力,这源于它铭记于心的忧患意识,它从不满足现实所取得的成就,走在科技前沿。可现在,在身边已经难觅诺基亚的身影了,因为诺基亚公司在取得巨大成就后,便十分“傲慢”,没能赶上时代步伐,被日益强大的苹果三星,HTC踩在脚下,在三次大裁员仍未解决资金问题后,申请了破产保护,最终被微软收购。
因为忧患意识而取得成功的例子有很多,如苹果公司从1976年的默默无闻到现在人尽皆知的高端手机领导者,大量竞争对手使它充满忧患意识,激发了它创新的无限潜力,它不断突破现实,股价连连增长,已突破6000亿美元。确实,也必须承认,有些企业靠模仿也在这个市场上生存了下来,如在Iphone5上市,十天后夏星公司和AWP公司便相继推出了五代智能机,比iPhone便宜很多,虽然销量上远远不及,但没有任何亏损,由于不少功能不及iPhone,用的是安卓系统,所以苹果公司也就睁只眼闭只眼,也就这样获利不少。不过,这种公司再怎么获利,没有突破肯定不会有长久生存的机会,这些公司会永远默默无闻,被其他有创新的品牌,被国际市场小视,最后迟早会被时代淘汰。
生活中我们也应该有足够的忧患意识,生活中的每一件事做完美了或者做成了都会是一种锻炼,时代在发展,也许有时除了学习以外多了解科技方面的发展也不是坏事,有些时候不断努力地突破一件你办不到的事情也可能成为未来成功的基础,现实未必是绝对的,花费一些本可以自由的时间研究感兴趣的东西,未来也就可能变得更成功。
当我们生活的世界不断改变,我们必须跟上脚步,走在时代的前沿,了解更多科技和未来,做好我们的本职工作。未来,指在突破现实,走向成功的彼岸!
上海松江区民办包玉刚实验学校(初中部)初二:Ricky Yu
本文标题:
轻触开关实现自锁功能-新一代小米插线板正式发布 功能更加强大 触控开关 本文地址:
http://www.61k.com/1165625.html