• <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;?
            }

            日韩欧美亚洲综合久久影院d3| 久久国产乱子伦免费精品| 久久久久国产日韩精品网站| 办公室久久精品| 精品国产99久久久久久麻豆 | 日本亚洲色大成网站WWW久久| 伊人色综合久久天天网| 久久国产精品-久久精品| 伊人久久亚洲综合影院| 亚洲国产精品久久久久久| 色综合久久中文字幕无码| 久久国产综合精品五月天| 97久久精品无码一区二区天美| 中文字幕亚洲综合久久菠萝蜜 | 久久久WWW成人| 91久久成人免费| 国产成年无码久久久久毛片| 久久午夜夜伦鲁鲁片免费无码影视| 免费观看成人久久网免费观看| 午夜精品久久久久久久久| 精品伊人久久久| 性高湖久久久久久久久AAAAA| 国产精品青草久久久久福利99 | 国内精品久久九九国产精品| 久久久久久国产精品无码下载 | 久久精品国产亚洲AV高清热| 中文字幕无码久久精品青草| 欧美日韩精品久久久久| 日韩AV毛片精品久久久| 欧美激情精品久久久久久久九九九| 久久国产精品99精品国产987| 国产亚洲综合久久系列| 久久精品亚洲日本波多野结衣 | 精品久久亚洲中文无码| 伊人久久大香线蕉亚洲五月天| 亚洲国产高清精品线久久| 久久久不卡国产精品一区二区| 久久夜色精品国产www| 色婷婷久久久SWAG精品| 久久伊人精品一区二区三区| 亚洲欧美成人综合久久久|