资源简介

比较2个24位位图到8位位图的算法效果。一个使用通用算法,一个使用Octree算法,Octree算法效果略好于通用算法。

资源截图

代码片段和文件信息

// Colors.c
// search “Wicked Code“->‘Jeff Prosise‘
//***************************************************************************
//
//  Colors presents an implementation of the Gervautz-Purgathofer octree
//  color quanitization algorithm that creates optimized color palettes for
//  for 16 24 and 32-bit DIB sections
//
//***************************************************************************

#include 
#include 
#include “Colors.h“

LRESULT CALLBACK WndProc (HWND UINT WPARAM LPARAM);
BOOL CALLBACK DlgProc (HWND UINT WPARAM LPARAM);

HPALETTE CreateExactPalette (HANDLE);
HPALETTE CreateOctreePalette (HANDLE UINT UINT);
void AddColor (NODE** BYTE BYTE BYTE UINT UINT UINT* NODE**);
NODE* CreateNode (UINT UINT UINT* NODE**);
void ReduceTree (UINT UINT* NODE**);
void DeleteTree (NODE**);
void GetPaletteColors (NODE* PALETTEENTRY* UINT*);
int GetRightShiftCount (DWORD);
int GetLeftShiftCount (DWORD);

void UpdatePaletteType (HWND UINT);
BOOL DoFileOpen (HWND);
void UpdateWindowtitle (HWND LPSTR);
void DisplayDIBSection (HDC HANDLE HPALETTE);
HPALETTE GetPaletteHandle (HWND HANDLE);
UINT BitsPerPixel (HANDLE);

/////////////////////////////////////////////////////////////////////////////
// Global variables

UINT        g_nPaletteType          = IDM_OPTIMIZED_PALETTE;//IDM_HALFTONE_PALETTE;
HANDLE      g_hImage                = NULL;
HPALETTE    g_hPalette              = NULL;
UINT        g_nColorBits            = 6;

/////////////////////////////////////////////////////////////////////////////
// WinMain

int WINAPI WinMain (HINSTANCE hInstance HINSTANCE hPrevInstance
    LPSTR lpszCmdLine int nCmdShow)
{
    static char szAppName[] = “Colors“;
    WNDCLASS wc;
    HWND hwnd;
    MSG msg;

    wc.style = 0;
    wc.lpfnWndProc = (WNDPROC) WndProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = hInstance;
    wc.hIcon = LoadIcon (NULL IDI_APPLICATION);
    wc.hCursor = LoadCursor (NULL IDC_ARROW);
    wc.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1);
    wc.lpszMenuName = MAKEINTRESOURCE (IDR_MENU);
    wc.lpszClassName = szAppName;

    RegisterClass (&wc);

    hwnd = CreateWindow (szAppName szAppName
        WS_OVERLAPPEDWINDOW CW_USEDEFAULT CW_USEDEFAULT CW_USEDEFAULT
        CW_USEDEFAULT HWND_DESKTOP NULL hInstance NULL);

    ShowWindow (hwnd nCmdShow);
    UpdateWindow (hwnd);

    while (GetMessage (&msg NULL 0 0)) {
        TranslateMessage (&msg);
        DispatchMessage (&msg);
    }
    return msg.wParam;
}

/////////////////////////////////////////////////////////////////////////////
// Window procedure

LRESULT CALLBACK WndProc (HWND hwnd UINT msg WPARAM wParam LPARAM lParam)
{
    HDC hdc;
    PAINTSTRUCT ps;
    UINT nColors;
    DIBSECTION ds;

    switch (msg)
{
    case WM_CREATE:
        InitCommonControls ();
        return 0;

    case WM_PAI

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2011-12-31 20:05  24to8Colors\
     文件         307  2011-12-13 17:23  24to8Colors\About.txt
     文件       55720  2011-12-31 20:05  24to8Colors\Colors.aps
     文件       23938  2011-12-12 09:30  24to8Colors\Colors.c
     文件        3627  2011-12-07 16:26  24to8Colors\Colors.dsp
     文件         537  2011-12-07 16:26  24to8Colors\Colors.dsw
     文件        1076  2011-12-07 14:26  24to8Colors\Colors.h
     文件       50176  2011-12-31 20:05  24to8Colors\Colors.ncb
     文件      136704  2011-12-31 20:05  24to8Colors\Colors.opt
     文件        1472  2011-12-13 17:27  24to8Colors\Colors.plg
     文件        3081  2011-12-07 15:12  24to8Colors\Colors.rc
     文件      532554  2011-12-06 14:49  24to8Colors\Eye.bmp
     文件      921656  2005-04-26 09:46  24to8Colors\Inside.bmp
     文件      320374  2011-11-03 14:23  24to8Colors\Protell.bmp
     文件         453  2011-12-07 15:12  24to8Colors\resource.h
     文件      648054  2011-12-06 15:25  24to8Colors\Siemens.bmp
     文件      458382  2002-09-02 18:08  24to8Colors\Start.bmp
     目录           0  2011-12-31 20:05  24to8Colors\VC60\
     文件        2591  2011-12-14 08:51  24to8Colors\VC60\LeftView.cpp
     文件        1780  2011-12-14 08:55  24to8Colors\VC60\LeftView.h
     文件        6015  2011-12-13 17:07  24to8Colors\VC60\MainFrm.cpp
     文件        2048  2011-12-08 17:16  24to8Colors\VC60\MainFrm.h
     文件        2085  2011-12-13 16:45  24to8Colors\VC60\MiddleView.cpp
     文件        1718  2011-12-14 08:55  24to8Colors\VC60\MiddleView.h
     文件        4263  2011-12-07 16:39  24to8Colors\VC60\ReadMe.txt
     目录           0  2011-12-31 20:05  24to8Colors\VC60\res\
     文件         637  2011-12-14 11:03  24to8Colors\VC60\Resource.h
     文件         598  2011-12-16 15:17  24to8Colors\VC60\res\Toolbar.bmp
     文件        1078  2011-12-07 16:39  24to8Colors\VC60\res\VC60.ico
     文件         396  2011-12-07 16:39  24to8Colors\VC60\res\VC60.rc2
     文件        1078  2011-12-07 16:39  24to8Colors\VC60\res\VC60Doc.ico
............此处省略26个文件信息

评论

共有 条评论