怎样快速获得一幅图像所用的颜色的总数?

解决方案 »

  1.   

    一个按钮,一个textbox
    Private Type mybmpinfo
        bfType      As String * 2
        bfSize      As Long
        bfReserved1 As Integer
        bfReserved2 As Integer
        bfOffBits   As Long
        biSize As Long
            biWidth As Long
            biHeight As Long
            biPlanes As Integer
            biBitCount As Integer
            biCompression As Long
            biSizeImage As Long
            biXPelsPerMeter As Long
            biYPelsPerMeter As Long
            biClrUsed As Long
            biClrImportant As Long
    End TypePrivate Sub Command1_Click()    On Error Resume Next
        Me.CommonDialog1.Filter = "bmp files(*.bmp)|*.bmp|JPG files(*.jpg)|*.jpg"
        Me.CommonDialog1.ShowOpen
        Dim mfile As String
        mfile = Me.CommonDialog1.FileName
        Picture1.Picture = LoadPicture(mfile)
        SavePicture Picture1.Picture, App.Path + "\mytemp.bmp"
        Dim mbmpinfo As mybmpinfo
        Open App.Path + "\mytemp.bmp" For Binary As #1
        Get #1, , mbmpinfo
        Close #1
        Text1.Text = "颜色数:2^" + CStr(mbmpinfo.biBitCount)
        Kill App.Path + "\mytemp.bmp"
    End Sub
      

  2.   

    这个话题很高级,一般用八叉树算法来计算.octree(英文名),去搜索下吧。
      

  3.   

    To rainstormmaster(rainstormmaster):你这样算太不科学了吧,注意题目"怎样快速获得一幅图像所用的颜色的总数?",注意"所用"这两个字.
      

  4.   

    呵呵,的确没注意,不过不知道你到底有什么用,压缩图片?建议去下面的地址看看:
    http://www.gameres.com/Articles/articles.asp?style=a
      

  5.   

    先保存为bmp格式用汇编打开图片。找出图片编码段,考如text,然后两个16进制数一组进行简化(删除相同的组),然后用text的长度除以2,就是颜色的总数吧。(没试过,你就当我瞎说的吧^v^)