有没有好的灰度图转彩色图的算法??
online曾经给过答案吧(不记得了),由于改版后,原帖子都被删除了,所以重新征集一次,然后加为FAQ,谢谢

解决方案 »

  1.   

    online哥哥再給答案,給了就加faq哦
      

  2.   

    那个啊!十六位不失真是不可能的,只不过用了抖动技术而已,看看zyl910斑竹的东西,有这个。
      

  3.   

    好怪的题目阿,好像没什么人问过吧,那也叫Frequently Asked吗?呵呵,开玩笑。GZ
      

  4.   

    Private Declare Function GetPixel Lib "gdi32" _
         (ByVal hdc As Long, ByVal x As Long, ByVal Y As Long) As Long
    Private Declare Function SetPixelV Lib "gdi32" _
         (ByVal hdc As Long, ByVal x As Long, _
          ByVal Y As Long, ByVal crColor As Long) As Long
    Private tmpPic As Picture
    Private Sub Command1_click()
        Dim width5  As Long, heigh5 As Long, rgb5 As Long
        Dim hdc5 As Long, i As Long, j As Long
        Dim bBlue As Long, bRed As Long, bGreen As Long
        Dim Y As Long
        
        width5 = Picture1.ScaleWidth
        heigh5 = Picture1.ScaleHeight
        hdc5 = Picture1.hdc
        For i = 1 To width5
            For j = 1 To heigh5
                rgb5 = GetPixel(hdc5, i, j)
                bBlue = Blue(rgb5)      '获得兰色值
                bRed = Red(rgb5)        '获得红色值
                bGreen = Green(rgb5)    '获得绿色值
                '将三原色转换为灰度
                Y = (9798 * bRed + 19235 * bGreen + 3735 * bBlue) \ 32768
                '将灰度转换为RGB
                rgb5 = RGB(Y, Y, Y)
                SetPixelV hdc5, i, j, rgb5
            Next j
        Next i
        Set Picture1.Picture = Picture1.Image
    End SubPrivate Function Red(ByVal mlColor As Long) As Long
        '从RGB值中获得红色值
        Red = mlColor And &HFF
    End Function
    Private Function Green(ByVal mlColor As Long) As Long
        '从RGB值中获得绿色值
        Green = (mlColor \ &H100) And &HFF
    End Function
    Private Function Blue(ByVal mlColor As Long) As Long
        ''从RGB值中获得蓝色值
        Blue = (mlColor \ &H10000) And &HFF
    End Function