• <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>

            life is game

            (本色)
            posts - 11, comments - 4, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            圖形處理:BMP格式轉gif格式

            Posted on 2006-12-04 18:44 原色 閱讀(1000) 評論(0)  編輯 收藏 引用

            #include?? <Stdio.h>??
            #include?? <Objbase.h>??
            #include?? <Windows.h>??
            #include?? <Gdiplus.h>??
            #include?? <GdiPlusEnums.h>??
            using?? namespace?? Gdiplus;??
            #pragma?? comment(lib,"gdiplus")??
            int?? GetCodecClsid(const?? WCHAR*,?? CLSID*);??
            HRESULT?? __fastcall?? AnsiToUnicode(LPCSTR?? pszA,?? LPOLESTR*?? ppszW)??
            {??
            ?ULONG?? cCharacters;??
            ?DWORD?? dwError;??
            ?if?? (NULL?? ==?? pszA)??
            ?{??
            ??*ppszW?? =?? NULL;??
            ??return?? NOERROR;??
            ?}??
            ?cCharacters?? =???? strlen(pszA)+1;??
            ?*ppszW?? =?? (LPOLESTR)?? CoTaskMemAlloc(cCharacters*2);??
            ?if?? (NULL?? ==?? *ppszW)??
            ??return?? E_OUTOFMEMORY;??
            ?if?? (0?? ==?? MultiByteToWideChar(CP_ACP,?? 0,?? pszA,?? cCharacters,*ppszW,?? cCharacters))??
            ?{??
            ??dwError?? =?? GetLastError();??
            ??CoTaskMemFree(*ppszW);??
            ??*ppszW?? =?? NULL;??
            ??return?? HRESULT_FROM_WIN32(dwError);??
            ?}??
            ?return?? NOERROR;??
            }??

            int?? main()
            {??
            ?int?? n_ret=0;??
            ?
            ?char *pic[2]={NULL,NULL};
            ?pic[0]=new char [128];
            ?pic[1]=new char[128];
            ?sprintf(pic[0],"ok.gif");
            ?sprintf(pic[1],"shangcheng_1.bmp");//"default.gif");
            ?GdiplusStartupInput?? gdiplusStartupInput;????
            ?ULONG?? gdiplusToken;????
            ?GdiplusStartup(&gdiplusToken,?? &gdiplusStartupInput,?? NULL);????
            ?{??
            ??CLSID???????????????????????????? codecClsid;??
            ??Status?????????????????????????? stat;??
            ??EncoderParameters???? encoderParameters;??

            ??GetCodecClsid(L"image/gif",?? &codecClsid);??
            ??encoderParameters.Count?? =?? 0;??
            ??LPOLESTR?? bstr_src_img;??
            ??LPOLESTR?? bstr_dst_fn;??
            ??AnsiToUnicode(pic[0],&bstr_dst_fn);??
            ??AnsiToUnicode(pic[1],&bstr_src_img);??
            ??Image?? image(bstr_src_img);??
            ??stat?? =image.Save(bstr_dst_fn,?? &codecClsid,?? &encoderParameters);??
            ??if(stat?? ==?? Ok)??
            ??{??
            ???n_ret=0;??
            ???wprintf(L"%s?? saved?? successfully.\n",bstr_dst_fn);??
            ??}??
            ??else??
            ??{??
            ???n_ret=-2;??
            ???wprintf(L"%d???? Attempt?? to?? save?? %s?? failed.\n",?? stat,?? bstr_dst_fn);??
            ??}??
            ??CoTaskMemFree(bstr_dst_fn);??
            ??CoTaskMemFree(bstr_src_img);??
            ?}??
            ?GdiplusShutdown(gdiplusToken);??
            ?return?? 0;??
            }
            int?? GetCodecClsid(const?? WCHAR*?? format,?? CLSID*?? pClsid)??
            {??
            ?UINT???? num?? =?? 0;?
            ?UINT???? size?? =?? 0;?
            ?ImageCodecInfo*?? pImageCodecInfo?? =?? NULL;???
            ?GetImageEncodersSize(&num,?? &size);??
            ?if(size?? ==?? 0)??
            ??return?? -1;????
            ?pImageCodecInfo?? =?? (ImageCodecInfo*)(malloc(size));??
            ?if(pImageCodecInfo?? ==?? NULL)??
            ??return?? -1;??
            ?GetImageEncoders(num,?? size,?? pImageCodecInfo);??
            ??for(UINT?? j?? =?? 0;?? j?? <?? num;?? ++j)??
            ?{??
            ??if(?? wcscmp(pImageCodecInfo[j].MimeType,?? format)?? ==?? 0?? )??
            ??{??
            ???*pClsid?? =?? pImageCodecInfo[j].Clsid;??
            ???return?? j;?
            ???}??????????
            ?}?
            ?return?? -1;?
            }

            91精品久久久久久无码| 热久久视久久精品18| 老色鬼久久亚洲AV综合| 久久久久亚洲AV无码永不| 国产麻豆精品久久一二三| 久久男人中文字幕资源站| 精品伊人久久大线蕉色首页| 久久99精品久久久久久动态图| 国产99久久久久久免费看 | 久久人人爽人人爽人人AV| 久久不见久久见免费视频7| 精品免费久久久久国产一区| 久久久久99这里有精品10 | 精品久久久久久久| 久久久精品一区二区三区| 99精品国产99久久久久久97| 久久国产成人午夜aⅴ影院| 久久久一本精品99久久精品88| 色悠久久久久久久综合网| 久久不射电影网| 无码专区久久综合久中文字幕| 久久精品国产一区二区| 国产精品久久久久久久久鸭| 久久精品成人欧美大片| 亚洲国产成人精品91久久久| 7国产欧美日韩综合天堂中文久久久久 | 国内精品久久久久影院优| 一本一道久久综合狠狠老 | 久久香蕉超碰97国产精品| 国产精品久久久久久久久软件| 亚洲国产二区三区久久| 精品久久久久中文字幕日本| 久久精品国产亚洲av麻豆蜜芽| 久久久免费观成人影院 | 日产久久强奸免费的看| 久久99久久成人免费播放| 国产精品岛国久久久久| 97久久天天综合色天天综合色hd| 久久人人爽人人爽人人片AV东京热 | 日韩精品久久无码人妻中文字幕| 99久久婷婷国产综合精品草原|