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

糯米

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 糯米 閱讀(624) 評論(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久久久二8| 亚洲黄色尤物视频| 美女999久久久精品视频| 美女视频黄 久久| 亚洲国产毛片完整版 | 亚洲高清久久网| 亚洲人久久久| 欧美激情精品久久久久久蜜臀| 国产精品久久久久9999| 国产欧美一区二区视频| 精品成人免费| 一区二区激情| 久久av红桃一区二区小说| 久久亚洲私人国产精品va| 亚洲欧洲日产国码二区| 亚洲香蕉网站| 久久躁狠狠躁夜夜爽| 欧美理论在线播放| 国产精品亚洲综合天堂夜夜| 亚洲国产成人精品久久久国产成人一区 | 欧美大片一区| 国产精品网站在线| 在线日韩电影| 亚洲女人天堂成人av在线| 亚洲理论电影网| 亚洲毛片在线| 亚洲欧美日韩综合一区| 狠狠色丁香久久婷婷综合丁香| 免费影视亚洲| 国产日韩欧美中文| 欧美亚洲免费高清在线观看| 久久精品视频网| 亚洲一区免费网站| 亚洲小说区图片区| 国产欧美一区二区三区沐欲| 国产精品videosex极品| 一本色道久久综合| 一区二区三区国产在线观看| 欧美午夜三级| 欧美一区二区三区免费观看视频 | 蜜桃久久av一区| 国产视频综合在线| 一本色道精品久久一区二区三区 | 精品成人久久| 久久久久久综合| 亚洲图片激情小说| 狠狠色香婷婷久久亚洲精品| 欧美一区二区在线免费观看| 亚洲欧美中文日韩v在线观看| 欧美精品在线网站| 欧美a级一区| 日韩午夜电影av| 国产区亚洲区欧美区| 亚洲精品国产精品国自产观看浪潮| 亚洲精品日韩在线观看| 国产午夜精品久久久久久免费视| 久久精品青青大伊人av| 欧美xx69| 9l国产精品久久久久麻豆| 黄色成人在线网址| 欧美一区二区网站| 99视频精品免费观看| 国产欧美一区视频| 久久婷婷麻豆| 99视频精品全国免费| 亚洲欧美制服另类日韩| 99精品久久久| 欧美性猛交99久久久久99按摩 | 亚洲国产欧美另类丝袜| 日韩视频国产视频| 久久久久久9| 国内久久精品视频| 另类专区欧美制服同性| 亚洲精品小视频在线观看| 久久久久久久精| 亚洲国产日韩在线| 亚洲国产高清一区二区三区| 亚洲高清成人| 欧美1区2区| 99在线精品视频| 久久爱www久久做| 亚洲日本黄色| 亚洲欧洲av一区二区| 国产综合久久| 亚欧成人在线| 男女激情视频一区| 欧美一区视频| 欧美成人性网| 亚洲免费观看高清完整版在线观看熊 | 91久久香蕉国产日韩欧美9色| 国产最新精品精品你懂的| 老司机午夜精品视频| 99国内精品久久| 亚洲成色999久久网站| 国产精品久久久久久久久久久久久| 欧美激情精品久久久久久变态 | 欧美色中文字幕| 午夜精品美女久久久久av福利| 一本久道久久综合狠狠爱| 亚洲免费av网站| 欧美成人免费va影院高清| 亚洲精品九九| 99国内精品久久| 性欧美videos另类喷潮| 久久综合色婷婷| 国产精品海角社区在线观看| 伊人婷婷欧美激情| 日韩午夜av| 欧美激情视频免费观看| 久久精品在线播放| 欧美sm视频| 亚洲毛片在线看| 美女黄毛**国产精品啪啪| 欧美色欧美亚洲另类七区| 麻豆精品视频| 欧美日韩精品免费| 亚洲精品免费网站| 久久经典综合| 亚洲欧美日本日韩| 国产婷婷色一区二区三区四区| 欧美成人午夜免费视在线看片| 另类图片国产| 久久成人综合视频| 欧美激情 亚洲a∨综合| 亚洲电影天堂av| 裸体素人女欧美日韩| 欧美亚洲综合另类| 久久久91精品国产一区二区精品| 久久裸体艺术| 亚洲电影免费在线| 欧美mv日韩mv国产网站| 久久综合五月| 亚洲视频999| 一本色道精品久久一区二区三区| 欧美精品日韩www.p站| 亚洲国产一二三| 99热在线精品观看| 国产精品毛片在线看| 亚洲欧美综合精品久久成人 | 国产亚洲在线观看| 亚洲欧美成人一区二区在线电影| 亚洲自拍偷拍色片视频| 一区在线免费| 亚洲国产精品成人| 国产日韩欧美成人| 亚洲一区二区三区乱码aⅴ蜜桃女| 美女999久久久精品视频| 欧美精品日韩www.p站| 亚洲免费视频一区二区| 久久成人精品电影| 亚洲影视在线| 女人天堂亚洲aⅴ在线观看| 国产欧美亚洲日本| 羞羞答答国产精品www一本| 久久综合狠狠综合久久综青草| 欧美一区二区高清| 欧美日韩人人澡狠狠躁视频| 久久全国免费视频| 影音先锋亚洲一区| 欧美成人tv| 午夜免费日韩视频| 美女日韩欧美| 国产精品成人久久久久| 欧美一区二区高清在线观看| 久久黄色影院| 欧美成人精品三级在线观看| 欧美少妇一区| 亚洲精品久久久久中文字幕欢迎你| 国产一级精品aaaaa看| 久久国产精品一区二区三区四区| 亚洲女人小视频在线观看| 欧美日韩成人一区二区| 在线视频欧美一区| 亚洲欧美日韩综合aⅴ视频| 欧美xart系列高清| 在线亚洲一区| 久久国产精品网站| 亚洲欧洲精品天堂一级| 久久伊人一区二区| 欧美成人亚洲成人| 宅男噜噜噜66国产日韩在线观看| 久久电影一区| 免费毛片一区二区三区久久久| 亚洲肉体裸体xxxx137| 国产精品久久久久久久久久免费| 久久爱www久久做| 亚洲精品免费在线播放| 一区二区三区日韩| 久久精品国产精品亚洲综合| 欧美sm重口味系列视频在线观看| 欧美/亚洲一区| 99国产精品久久久久久久久久| 国产精品视频免费一区| 欧美特黄一级大片| 久久久精品国产一区二区三区| 一区二区三区四区五区视频| 亚洲日韩欧美视频一区|