• 大小: 4.52MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-09-18
  • 语言: C/C++
  • 标签:

资源简介

24位图转化为8位图的C++代码,很好用的

资源截图

代码片段和文件信息

#include “StdAfx.h“
#include “BMPIMAGE.h“
#include 
#include 


BMPIMAGE::BMPIMAGE(void)
{
}


BMPIMAGE::~BMPIMAGE(void)
{
}


//计算平方差的函数
int PFC(int color1 int color2)
{
    int xyz;
    x = (color1 & 0xf) - (color2 & 0xf);
    y = ((color1>>4) & 0xf) - ((color2>>4) & 0xf);
    z = ((color1>>8) & 0xf) - ((color2>>8) & 0xf);
    return (x*x + y*y + z*z);
};

//直接插入排序
int Sort1(int *src int *attach int n)
{
    int cur cur1;
    int ijk=0;
    for (i = 1; i < n; i++)
    {
        cur     = src[i];
        cur1 = attach[i];
        for (j = i - 1; j >= 0; j--)
        {
            if (cur > src[j])
            {
                src[j+1]    = src[j];
                attach[j+1] = attach[j];
            }
            else
                break;
        }
        src[j+1]  = cur;
        attach[j+1] = cur1;
    }
    return 0;
}

//快速排序
int Sort2(int *src int *attach int n)
{
    if (n <= 12)
        return Sort1(src attach n);
    int low = 1 high = n - 1;
    int tmp;
    while (low <= high)
    {
        while (src[low] >= src[0])
        {
            if (++low > n - 1)
                break;
        }
        while (src[high] < src[0])
        {
            if (--high < 1)
                break;
        }
        if (low > high)
            break;
        {
            tmp                = src[low];
            src[low]        = src[high];
            src[high]        = tmp;
            tmp                = attach[low];
            attach[low]        = attach[high];
            attach[high]    = tmp;
        }
        low++;
        high--;
    }

    
    {
        tmp                = src[low - 1];
        src[low - 1]    = src[0];
        src[0]            = tmp;
        tmp                = attach[low - 1];
        attach[low - 1]    = attach[0];
        attach[0]        = tmp;
    }
    if (low > 1)
        Sort2(src attach low - 1);
    if (low < n)
        Sort2(&src[low] &attach[low] n - low);
    return 0;
}

//将24bit的象素颜色数据转换为256色图的图像数据(即索引值)
int Transfer(WORD *color24bit int len BYTE *Index RGBMixPlate *mainColor)
{
    int usedTimes[4096] = {0};
    int miniColor[4096];
    for (int i = 0; i < 4096; i++)
        miniColor[i] = i;
    int i = 0;
    for (i = 0; i < len; i++)
    {
        assert(color24bit[i] < 4096);
        usedTimes[color24bit[i]]++;
    }

    int numberOfColors = 0;
    for (i = 0; i < 4096; i++)
    {
        if (usedTimes[i] > 0)
            numberOfColors++;
    }

    //对usedTimes进行排序,排序过程中minColor数组(保存了颜色值)也作与useTimes
    //数组相似的交换
    Sort2(usedTimes miniColor 4096);

    //usedTimes数组中是各颜色使用频率,从高到低排列,显然第numberOfColor个之后的都为0
    //miniColor数组中是相应的颜色数据
    //将前256个颜色数据保存到256色位图的调色盘中
    for (i = 0; i < 256; i++)
    {
        mainColor[i].rgbBlue    = (BYTE)((miniColor[i]>>8)<<4);
        mainColor[i].rgbGreen    = (BYTE)(((miniColor[i]>

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2015-09-07 17:08  TestImage24depthto8\
     目录           0  2015-09-07 15:17  TestImage24depthto8\Debug\
     文件       35328  2015-09-07 15:24  TestImage24depthto8\Debug\TestImage24depthto8.exe
     文件      363084  2015-09-07 15:24  TestImage24depthto8\Debug\TestImage24depthto8.ilk
     文件      510976  2015-09-07 15:24  TestImage24depthto8\Debug\TestImage24depthto8.pdb
     目录           0  2015-09-07 15:25  TestImage24depthto8\TestImage24depthto8\
     目录           0  2015-09-07 15:21  TestImage24depthto8\TestImage24depthto8\11\
     文件     2359350  2015-09-07 15:21  TestImage24depthto8\TestImage24depthto8\11\Desert24.bmp
     文件        4399  2015-09-07 15:09  TestImage24depthto8\TestImage24depthto8\BMPIMAGE.cpp
     文件        3929  2015-09-07 15:09  TestImage24depthto8\TestImage24depthto8\BMPIMAGE.h
     目录           0  2015-09-07 15:24  TestImage24depthto8\TestImage24depthto8\Debug\
     文件       11787  2015-09-07 15:09  TestImage24depthto8\TestImage24depthto8\Debug\BMPIMAGE.obj
     文件        4892  2015-09-07 15:24  TestImage24depthto8\TestImage24depthto8\Debug\CL.read.1.tlog
     文件        2216  2015-09-07 15:24  TestImage24depthto8\TestImage24depthto8\Debug\CL.write.1.tlog
     文件         406  2015-09-07 15:04  TestImage24depthto8\TestImage24depthto8\Debug\TestImage24depthto8.exe.embed.manifest
     文件         472  2015-09-07 15:04  TestImage24depthto8\TestImage24depthto8\Debug\TestImage24depthto8.exe.embed.manifest.res
     文件         381  2015-09-07 15:24  TestImage24depthto8\TestImage24depthto8\Debug\TestImage24depthto8.exe.intermediate.manifest
     文件          71  2015-09-07 15:24  TestImage24depthto8\TestImage24depthto8\Debug\TestImage24depthto8.lastbuildstate
     文件        3259  2015-09-07 15:24  TestImage24depthto8\TestImage24depthto8\Debug\TestImage24depthto8.log
     文件       15076  2015-09-07 15:24  TestImage24depthto8\TestImage24depthto8\Debug\TestImage24depthto8.obj
     文件     1179648  2015-09-07 15:04  TestImage24depthto8\TestImage24depthto8\Debug\TestImage24depthto8.pch
     文件         228  2015-09-07 15:04  TestImage24depthto8\TestImage24depthto8\Debug\TestImage24depthto8_manifest.rc
     文件        2528  2015-09-07 15:24  TestImage24depthto8\TestImage24depthto8\Debug\cl.command.1.tlog
     文件           2  2015-09-07 15:24  TestImage24depthto8\TestImage24depthto8\Debug\link-cvtres.read.1.tlog
     文件           2  2015-09-07 15:24  TestImage24depthto8\TestImage24depthto8\Debug\link-cvtres.write.1.tlog
     文件           2  2015-09-07 15:24  TestImage24depthto8\TestImage24depthto8\Debug\link.11836-cvtres.read.1.tlog
     文件           2  2015-09-07 15:24  TestImage24depthto8\TestImage24depthto8\Debug\link.11836-cvtres.write.1.tlog
     文件           2  2015-09-07 15:24  TestImage24depthto8\TestImage24depthto8\Debug\link.11836.read.1.tlog
     文件           2  2015-09-07 15:24  TestImage24depthto8\TestImage24depthto8\Debug\link.11836.write.1.tlog
     文件           2  2015-09-07 15:24  TestImage24depthto8\TestImage24depthto8\Debug\link.11884-cvtres.read.1.tlog
     文件           2  2015-09-07 15:24  TestImage24depthto8\TestImage24depthto8\Debug\link.11884-cvtres.write.1.tlog
............此处省略30个文件信息

评论

共有 条评论

相关资源