青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

糯米

TI DaVinci, gstreamer, ffmpeg
隨筆 - 167, 文章 - 0, 評論 - 47, 引用 - 0
數據加載中……

根據擴展名獲得ico文件

 

#define ICON_SIZE 32

static int _HBitmapToBmp32Bits(HBITMAP hBitmap, U8 *outint out_len)
{   
    
/*
     * 注意:
     * 該函數代碼部分參考csdn。向原作者致敬!
     
*/

    
// 設備描述表   
    HDC hDC; 
    
//位圖中每個像素所占字節數   
    WORD wBitCount; 
    
// 定義調色板大小,位圖中像素字節大小,位圖文件大小,寫入文件字節數
    DWORD dwBmBitsSize;
    
//位圖屬性結構   
    BITMAP Bitmap; 
    
//位圖信息頭結構     
    BITMAPINFOHEADER bi; 
    
// 定義文件,分配內存句柄,調色板句柄   
    
// 計算位圖文件每個像素所占字節數   
    HANDLE hPal, hOldPal = NULL;

    
// 設置位圖信息頭結構   
    wBitCount = 32;
    GetObject(hBitmap, 
sizeof(BITMAP), (LPSTR)&Bitmap); 
    
if (Bitmap.bmWidth != ICON_SIZE || Bitmap.bmHeight != ICON_SIZE) {
        Dbg(
"size not fit\n");
        
return 0;
    }


    memset(
&bi, 0sizeof(bi));
    bi.biSize 
= sizeof(BITMAPINFOHEADER);   
    bi.biWidth 
= Bitmap.bmWidth;   
    bi.biHeight 
= Bitmap.bmHeight;   
    bi.biPlanes 
= 1;   
    bi.biBitCount 
= wBitCount;   
    bi.biCompression 
= BI_RGB;   

    
// 計算位圖大小   
    dwBmBitsSize = ((Bitmap.bmWidth*wBitCount+31)/32* 4 * Bitmap.bmHeight;
    
if (out_len < (int)dwBmBitsSize)
        
return 0;

    
// 處理調色板
    hPal = (HPALETTE)GetStockObject(DEFAULT_PALETTE); 
    
if (hPal) {   
        hDC 
= GetDC(NULL);   
        hOldPal 
= SelectPalette(hDC, (HPALETTE)hPal, FALSE);   
        RealizePalette(hDC);   
    }
   

    
// 獲取該調色板下新的像素值   
    GetDIBits(hDC, 
              hBitmap, 
              
0
              (UINT)Bitmap.bmHeight,   
              (LPSTR)
out,   
              (BITMAPINFO 
*)&bi,  
              DIB_PAL_COLORS
              );

    
// 恢復調色板       
    if (hOldPal) {   
        SelectPalette(hDC,(HPALETTE)hOldPal, TRUE);   
        RealizePalette(hDC);   
        ReleaseDC(NULL, hDC);   
    }


    
return dwBmBitsSize;   
}
   


static int ExtToIcoFile(char *ext, U8 *outint out_len)
{
    SHFILEINFOA sfi;   
    
char str[32= "*." };
    U32 
*buf;
    ICONINFO ii;
    U8 
*orig = out;
    
int i;

#define XOR_SIZE ICON_SIZE*ICON_SIZE*4
#define AND_SIZE ICON_SIZE*ICON_SIZE/8

    
// Calc File Length
    
// 文件頭6字節
    
// 圖像信息塊16字節
    
// BMP信息頭40字節
    
// XOR位圖
    
// 單色AND位圖
    if (out_len < 6 + 16 + 40 + XOR_SIZE + AND_SIZE)
        
return 0;

    strncat(str, ext, 
sizeof(str) - 8);
    SHGetFileInfoA(str,  
                   FILE_ATTRIBUTE_NORMAL,     
                   
&sfi,
                   
sizeof(SHFILEINFO),  
                   SHGFI_USEFILEATTRIBUTES 
| SHGFI_ICON
                   );
    GetIconInfo(sfi.hIcon, 
&ii);

    
/*
     (一、文件頭6字節) 
000(000)2    保留的字節            00 00 
002(002)2    資源類型             01 00 (01為圖標,02為光標) 
004(004)2    圖象個數             01 00 
    
*/

    
*(U16 *)out = 0out += 2;
    
*(U16 *)out = 1out += 2;
    
*(U16 *)out = 1out += 2;

    
/*
 (二、圖像信息塊16字節)  
006(006)1    圖標寬度             20 
007(007)1    圖標高度             20 
008(008)1    顏色計數             00(02=單色, 00≥256色) 
009(009)1    未用                00 
010(00A)4    保留的              00 00 00 00 
014(00E)4    圖象數據塊的長度                 28 01 00 00(10進制=296) 
018(012)4    圖象數據塊相對于文件頭部的偏移量 16 00 00 00(10進制=22) 
    
*/

    
*out++ = ICON_SIZE;
    
*out++ = ICON_SIZE;
    
*out++ = 0;
    
*out++ = 0;
    
*(U32 *)out = 0out += 4;
    
*(U32 *)out = 40 + XOR_SIZE + AND_SIZE; out += 4;
    
*(U32 *)out = 22out += 4;

    
/*
 (三、BMP信息頭40字節) 
022(016)4    BMP 信息頭結構長度        28 00 00 00(10進制=40)  
026(01A)4    圖像寬度              10 00 00 00 
030(01E)4    圖像高度(XOR圖高度+AND圖高度) 20 00 00 00 
034(022)2    位面板數                         01 00 
036(024)2    每象素所占位數                   04 00 
038(026)4    象素數據的壓縮類型        00 00 00 00(表示未壓縮) 
042(02A)4    圖象數據的長度          C0 00 00 00(10進制=192) 
046(02E)16   未用               16個00 
    
*/

    
*(U32 *)out = 40out += 4;
    
*(U32 *)out = 32out += 4;
    
*(U32 *)out = 64out += 4;
    
*(U16 *)out = 1out += 2;    // ?? 
    *(U16 *)out = 32out += 2;
    
*(U32 *)out = 0out += 4;
    
*(U32 *)out = XOR_SIZE + AND_SIZE; out += 4;
    memset(
out016); out += 16;

    
/*
    (五、XOR位圖的數據)  
    
*/

    
if (_HBitmapToBmp32Bits(ii.hbmColor, out, XOR_SIZE) != XOR_SIZE) 
        
return 0;
    
out += 32*32*4;

    
/*
    (六、單色AND位圖的數據) 
    
*/

    buf 
= (U32 *)malloc(XOR_SIZE);
    
if (!buf)
        
return 0;
    
if (_HBitmapToBmp32Bits(ii.hbmMask, (U8 *)buf, XOR_SIZE) != XOR_SIZE)
        
return 0;
    memset(
out0, AND_SIZE);
    
//out += 32*32/8;
    for (i = 0; i < AND_SIZE*8; i++{
        
if (buf[i])
            
*out |= (1 << (7 - (i&7)));
        
if ((i&7== 7)
            
out++;
    }

    free(buf);

#undef AND_SIZE
#undef XOR_SIZE

    
return out - orig;
}


#undef ICON_SIZE


int main()
{
    
void *s, *a;
    
int len;
    
static char line[1024], method[16], url[128];
    FILE 
*fp;
    
static U8 buf[1024*1024*1];
    
    fp 
= fopen("b.ico""wb+");
    len 
= ExtToIcoFile("mp3", buf, sizeof(buf));
    len 
= fwrite(buf, len, 1, fp);
    fclose(fp);
    
return 0;

posted on 2010-02-22 20:54 糯米 閱讀(628) 評論(0)  編輯 收藏 引用 所屬分類: Misc

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            午夜精品久久久99热福利| 亚洲欧美日韩在线不卡| 久久视频一区二区| 一区在线电影| 欧美黑人在线观看| 欧美激情精品久久久| 99在线视频精品| 国产精品99久久99久久久二8| 欧美性一二三区| 欧美淫片网站| 狼人天天伊人久久| 99精品国产高清一区二区| 亚洲免费高清| 模特精品在线| 日韩亚洲视频在线| 亚洲欧美999| 精品不卡视频| 亚洲第一精品电影| 欧美性猛交xxxx免费看久久久| 午夜亚洲视频| 玖玖国产精品视频| 亚洲网在线观看| 久久久不卡网国产精品一区| 亚洲毛片在线观看| 亚洲欧美日韩国产中文| 亚洲人体一区| 亚洲欧美一区二区原创| 亚洲福利视频一区二区| 99这里只有久久精品视频| 国产亚洲综合性久久久影院| 欧美成人伊人久久综合网| 一本久久综合亚洲鲁鲁五月天| 亚洲人成人一区二区在线观看| 国产精品久久久久久久久动漫| 久久精品欧洲| 欧美日韩在线播放一区| 开心色5月久久精品| 欧美日韩色综合| 免费成人高清在线视频| 国产精品白丝黑袜喷水久久久| 麻豆精品传媒视频| 欧美性猛交一区二区三区精品| 免费成人在线视频网站| 国产精品蜜臀在线观看| 亚洲人午夜精品免费| 激情视频一区| 亚洲综合欧美| 中文国产成人精品久久一| 久久综合久久久久88| 欧美中文字幕在线观看| 欧美体内she精视频| 欧美激情一二三区| 在线成人黄色| 久久不见久久见免费视频1| 亚洲欧美中文日韩在线| 欧美精品日韩www.p站| 蜜臀av一级做a爰片久久| 国产精品乱码久久久久久| 亚洲精品乱码久久久久久日本蜜臀| 国内外成人免费激情在线视频网站| 夜夜躁日日躁狠狠久久88av| 亚洲毛片网站| 欧美久久99| 亚洲欧洲日本专区| 亚洲乱码国产乱码精品精98午夜| 久久精品国产一区二区三区| 久久久精彩视频| 国产亚洲欧美日韩一区二区| 西瓜成人精品人成网站| 欧美一区二区三区久久精品| 国产精品久久久久久久电影 | 国产女人18毛片水18精品| 亚洲欧洲精品一区二区三区不卡 | 久久婷婷丁香| 国产亚洲二区| 久久精品一本| 欧美黑人多人双交| 亚洲免费黄色| 欧美日一区二区三区在线观看国产免 | 欧美日产国产成人免费图片| 亚洲大胆人体视频| 日韩一级精品| 欧美日韩视频在线一区二区观看视频| 亚洲国产成人在线视频| 一道本一区二区| 国产精品日韩欧美综合 | 欧美成人国产| av成人免费在线| 欧美亚洲成人免费| 欧美一区二区三区四区高清 | 亚洲精品系列| 欧美丝袜第一区| 欧美一区二区三区四区高清| 久久久精品网| 亚洲老板91色精品久久| 欧美午夜一区二区福利视频| 亚洲欧美国产视频| 嫩草伊人久久精品少妇av杨幂| 亚洲精品一区二区在线观看| 欧美日韩在线一二三| 欧美一级视频精品观看| 欧美激情黄色片| 西西人体一区二区| 91久久中文字幕| 国产精品网站在线观看| 毛片av中文字幕一区二区| 日韩视频在线播放| 久久久一本精品99久久精品66| 亚洲人成啪啪网站| 国产亚洲二区| 欧美日韩成人综合在线一区二区| 校园激情久久| 亚洲狼人综合| 男同欧美伦乱| 久久黄色影院| 亚洲天堂av综合网| 91久久在线播放| 国产亚洲欧美日韩一区二区| 欧美精品日韩综合在线| 久久精品久久综合| 亚洲欧美久久久久一区二区三区| 欧美国产日本高清在线| 久久精品国产精品亚洲| 亚洲深夜福利在线| 亚洲精品美女| 在线成人性视频| 国产日本欧美在线观看| 国产精品成人一区二区三区夜夜夜| 久久一区激情| 久久精品国产91精品亚洲| 亚洲少妇中出一区| 亚洲毛片一区二区| 亚洲国产日韩欧美在线图片| 久久综合色婷婷| 久久精品九九| 久久精品国产精品亚洲综合| 亚洲欧美电影院| 亚洲午夜久久久久久尤物| 一本大道久久精品懂色aⅴ| 亚洲国产高清自拍| 亚洲大胆人体视频| 在线观看日韩av先锋影音电影院| 国产午夜精品理论片a级探花 | 久久夜色精品国产噜噜av| 欧美在线一级视频| 性做久久久久久免费观看欧美| 亚洲综合社区| 亚洲摸下面视频| 亚洲一级网站| 亚洲欧美日韩一区在线| 亚洲综合成人婷婷小说| 亚洲主播在线| 欧美一区二区三区四区在线观看 | 美国成人直播| 免费成人激情视频| 欧美成人a∨高清免费观看| 免费成人av在线| 欧美激情视频一区二区三区不卡| 欧美电影免费观看高清| 欧美成人一二三| 亚洲精品国产欧美| 一区二区日韩精品| 亚洲男人天堂2024| 久久精彩视频| 欧美电影免费| 欧美午夜不卡视频| 国产日韩亚洲| 91久久午夜| 国产精品99久久久久久宅男| 性刺激综合网| 免费在线一区二区| 一二三区精品| 亚洲国产精品久久人人爱蜜臀| 亚洲国产精品久久久久| 一本久久a久久精品亚洲| 亚洲女性喷水在线观看一区| 久久精品亚洲精品| 欧美国产专区| 国产欧美日韩在线视频| 亚洲国产精品女人久久久| 一区二区三区精品视频在线观看| 亚洲综合国产| 免费永久网站黄欧美| 99成人在线| 久久久久一本一区二区青青蜜月| 欧美激情成人在线视频| 国产欧美日韩伦理| 亚洲精品你懂的| 欧美在线观看视频一区二区| 欧美成人精品一区二区三区| 一区二区高清| 噜噜噜噜噜久久久久久91| 国产精品毛片一区二区三区| 在线观看日韩专区| 午夜精品视频| 亚洲裸体俱乐部裸体舞表演av| 欧美在线免费播放| 国产精品户外野外| 日韩午夜免费视频| 鲁大师影院一区二区三区|