日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

【开源程序(C++)】获取bing图片并自动设置为电脑桌面背景

發布時間:2023/12/13 c/c++ 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【开源程序(C++)】获取bing图片并自动设置为电脑桌面背景 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

眾所周知,bing搜索網站首頁每日會更新一張圖片,張張漂亮(額,也有一些不合我口味的),特別適合用來做電腦壁紙。

我們想要將bing網站背景圖片設置為電腦桌面背景的通常做法是:

  • 上網,搜索bing
  • 找到圖片的下載鏈接,并下載之
  • 將圖片設置為桌面背景(也有部分瀏覽器支持直接在網頁中右擊圖片設置為壁紙)
  • 可能你還會刪除下載下來的圖片

作為一枚coder,你不會覺得麻煩嘛?至少需要三個步驟呢!

So...我就用C++語言寫了一個小程序,用于獲取bing網站的圖片,并將其設置為桌面背景。整個過程只需要點擊.exe文件,一鍵完成!

當然,你也可以通過本程序,窺見Windows API的些許用法,活學活用C++知識!

當然網上也存在片片斷斷的程序,我的部分程序也借鑒了它們的思想,在此感謝互聯網和辛勤的貢獻者們。

以下是程序設計的技術要點:

--------------------------------------------------------------

技術要點:

1、獲取網絡地址 直接使用網絡地址或下載 注意若下載下來后,要將\轉換為/,當然也可以用\\ 網絡地址可以從這里獲取:http://cn.bing.com/HPImageArchive.aspx?format=xml&idx=0&n=1 在返回的xml頁面中(images->image->url)找到具體的圖片地址(xml解析),拼接到bing域名后面構成完整地址 注:xml解析用了TinyXml2 2、轉換圖片格式(jpg->bmp),本程序中的SystemParametersInfoA函數只支持bmp 在程序中自動轉換(單單改后綴名是沒有用的),轉換用的程序是從網上下載的,用C語言編寫而成 考慮到需要改后綴名,那就直接下載圖片好了,順便存儲之 3、圖片保存路徑為C:/Users/Administrator/bingPicture/,格式為.jpg 方便以后瀏覽

注意:部分用戶電腦可能不存在路徑C:/Users/Administrator/,造成程序無法執行,可以直接在C盤根目錄下創建路徑,如C:/bingPicture/
注意不保存轉換后的bmp格式圖片(設置背景后即刪除),因為體積較大 判斷文件夾是否存在,若不存在,則自動創建文件夾


4、注意本程序獲取的圖片尺寸是1366x768,若你的屏幕分辨率為1920x1080,還需要對Xml解析出來的圖片Url地址進行字符串替換(將1366x768換成1920x1080即可)

前提:針對1920x1080尺寸的圖片地址存在


5、若此程序若在國際網絡下運行,獲取的就是國際版bing壁紙;若在國內網絡下運行,獲取的就是中國版bing壁紙。因此在同一天內,在不同網絡環境下獲取的圖片可能不同

*未實現的功能*: 1、獲取每日壁紙的故事(利用bing故事接口) ,更新壁紙后顯示在執行框中 2、開機自啟動,并隱藏到托盤中(為減少CPU占用并增加趣味性,設置為開機自動啟動,提示網絡連接,并輸入"go"才執行功能) 電腦若未關機,則在24:00自動啟動,更換背景 3、軟件自動更新版本功能

--------------------------------------------------------------

程序在文章后面提供,源碼已注釋很詳細,不再贅述。

注意,使用程序之前,務必看以下注意事項:

--------------------------------------------------------------

請注意:
?? ?1、本軟件使用Qt開發,您也可以將文件加入自己的工程,使用其他IDE開發
?? ????? 需要注意的一點是,本軟件需要加入URLMON.DLL(源碼包中有)

?? ?2、本軟件開源(源碼位于xiaoxi666的博客園以及github,不對其他地址給出的鏈接負責),僅用于學習交流,請勿用于商業用途

?? ?3、為防止軟件被加入惡意功能,不提供可執行文件,若需使用請重新編譯,編譯器需要支持c++11

?? ?4、本軟件程序中內含刪除臨時文件功能,請在更改前仔細確認,避免路徑錯誤而刪除其他重要文件

--------------------------------------------------------------

然而許多小伙伴要體驗效果,我就一并把可執行文件放出來吧(請勿隨意傳播.exe文件防止有人添加惡意功能。當然源碼開放可共享)

下載區:

  • 源碼
  • 可執行文件(可執行文件中圖片保存地址為C:/bingPicture/

但一定要注意核對文件校驗碼(以保證安全):

  • ?可執行文件壓縮包WallPaper校驗碼

    MD5: 48173BA7DCF2120F2822226A5D4A90CF
?????????? SHA1: CEB0ED570AF613EC3829AC8FDE4F8C50DDEF4101

  • ?可執行文件WallPaper_1366x768_Common校驗碼(此版本用于1366x768分辨率)

    MD5: ACDA8E5E4CF0B2916254B233D1243FD3
  ???? SHA1: 6041C813DC8E2AE29EA8675EF279CFC0E7921D53

  • 可執行文件WallPaper_1920x1080_Common校驗碼(此版本用于1920x1080分辨率)

    MD5: 474570808A56EFDC7B589F605D08C5B6
  ????? SHA1: B78921AD655B35F079076904A22F1A0E5122EB7F

?

為方便瀏覽,貼出主要源程序:

?main.cpp文件

1 //main.cpp 2 /******************windows桌面背景更換C++程序*********************************************************** 3 功能:獲取每日bing搜索主頁圖片,設置為當日桌面壁紙。并將其下載保存至本地文件夾方便以后瀏覽 4 作者:xiaoxi666 5 日期:2017/03/12 6 7 技術要點: 8 1、獲取網絡地址 直接使用網絡地址或下載 注意若下載下來后,要將\轉換為/,當然也可以用\\ 9 網絡地址可以從這里獲取:http://cn.bing.com/HPImageArchive.aspx?format=xml&idx=0&n=1 10 在返回 的xml頁面中(images->image->url)找到具體的圖片地址(xml解析),拼接到bing域名后面,構成完整地址 11 注:xml解析用了TinyXml2 12 13 2、轉換圖片格式(jpg->bmp),本程序中的SystemParametersInfoA函數只支持bmp 14 在程序中自動轉換(單單改后綴名是沒有用的),轉換用的程序是從網上下載的,用C語言編寫而成 15 考慮到需要改后綴名,那就直接下載圖片好了,順便存儲之 16 17 3、圖片保存路徑為C:\bingPicture\,格式為.jpg 方便以后瀏覽 18 注意不保存轉換后的bmp格式圖片(設置背景后即刪除),因為體積較大 19 判斷文件夾是否存在,若不存在,則自動創建文件夾 20 21 *未實現的功能*: 22 ***獲取每日壁紙的故事(利用bing故事接口) ,更新壁紙后顯示在執行框中 23 24 ***開機自啟動,并隱藏到托盤中(為減少CPU占用并增加趣味性,設置為開機自動啟動,提示網絡連接,并輸入"go"才執行功能) 25 電腦若未關機,則在24:00自動啟動,更換背景 26 27 ***軟件自動更新版本功能 28 29 ******************************************************************************************************/ 30 31 #include <iostream> //輸入輸出 32 #include <cstring> //文件命名處理需要用字符串 33 #include <windows.h> //調用操作系統各種API 34 #include <ctime> //獲取時間,各種文件命名 35 #include <UrlMon.h> //包含提供下載服務的API 36 #include "tinyxml2.h" //解析XML 37 #include <io.h> //判斷文件夾是否存在 38 #include <direct.h> //創建文件夾 39 extern "C" 40 { 41 #include "jpeg.h" //轉換圖片格式jpg->bmp 轉換格式的程序使用C語言寫的 42 } 43 44 //創建本地bingPicture路徑和Tmp路徑 45 void createDir() 46 { 47 //本地bingPicture路徑 48 std::string LocalFolder="C:/bingPicture/"; 49 50 if(0!=access(LocalFolder.c_str(),0)) //判斷文件夾是否存在,若不存在則創建 51 if(0!=mkdir(LocalFolder.c_str())) 52 std::cout<<"創建文件夾bingPicture失敗!"<<std::endl; 53 else 54 std::cout<<"創建文件夾bingPicture成功!"<<std::endl; 55 else 56 std::cout<<"文件夾bingPicture已存在!"<<std::endl; 57 58 //本地Tmp路徑 59 std::string LocalXmlFolder="C:/bingPicture/Tmp/"; 60 61 if(0!=access(LocalXmlFolder.c_str(),0)) //判斷文件夾是否存在,若不存在則創建 62 if(0!=mkdir(LocalXmlFolder.c_str())) 63 std::cout<<"創建臨時文件夾Tmp失敗!"<<std::endl; 64 else 65 std::cout<<"創建臨時文件夾Tmp成功!"<<std::endl; 66 else 67 std::cout<<"臨時文件夾Tmp已存在!"<<std::endl; 68 69 } 70 71 /************************************************************************************** 72 首先明白一個概念,即string替換所有字符串,將"12212"這個字符串的所有"12"都替換成"21",結果是什么? 73 可以是22211,也可以是21221,有時候應用的場景不同,就會希望得到不同的結果,所以這兩種答案都做了實現。 74 **************************************************************************************/ 75 //替換字符串方法1(完全輪詢,替換一次后接著再次掃描,因為替換一次后可能又出現了滿足替換條件的字符串) 76 std::string & replace_all(std::string& str,const std::string& old_value,const std::string& new_value) 77 { 78 while(true) { 79 std::string::size_type pos(0); 80 if((pos=str.find(old_value))!=std::string::npos) 81 str.replace(pos,old_value.length(),new_value); 82 else 83 break; 84 } 85 return str; 86 } 87 88 //替換字符串方法2(只替換一次) 本項目中,只替換\為/用方法2即可 89 std::string & replace_all_distinct(std::string& str,const std::string& old_value,const std::string& new_value) 90 { 91 for(std::string::size_type pos(0); pos!=std::string::npos; pos+=new_value.length()) 92 { 93 if((pos=str.find(old_value,pos))!=std::string::npos) 94 str.replace(pos,old_value.length(),new_value); 95 else break; 96 } 97 return str; 98 } 99 100 //獲取年月日(命名用) 101 std::string getYearMonthDay() 102 { 103 time_t timer; 104 time(&timer); 105 tm* t_tm = localtime(&timer); 106 107 std::string Year=std::to_string(t_tm->tm_year+1900); 108 std::string Month=std::to_string(t_tm->tm_mon+1); 109 std::string Day=std::to_string(t_tm->tm_mday); 110 std::string PictureName=Year+"_"+Month+"_"+Day; 111 112 return PictureName; 113 } 114 115 //獲取圖片的Xml并解析圖片的url路徑 116 std::string getPicTureXmlAndUrl() 117 { 118 //網絡上的XML路徑 119 std::string WebXmlpath ="http://cn.bing.com/HPImageArchive.aspx?format=xml&idx=0&n=1"; 120 //本地Xml路徑 121 std::string LocalXmlFolder="C:/bingPicture/Tmp/"; 122 std::string LocalXmleach=getYearMonthDay(); 123 std::string LocalXmlFullpath=LocalXmlFolder+LocalXmleach+".xml"; 124 125 if(URLDownloadToFileA(NULL, 126 WebXmlpath.c_str(), 127 LocalXmlFullpath.c_str(), 128 0, 129 NULL) 130 ==S_OK) 131 { 132 std::cout<<"Xml下載成功!即將解析今日壁紙Url!"<<std::endl; 133 134 /***************下面開始解析xml中的url路徑*******************/ 135 tinyxml2::XMLDocument doc; 136 if(tinyxml2::XML_SUCCESS != doc.LoadFile(LocalXmlFullpath.c_str())) 137 std::cout<<"讀取Xml文件異常!"<<std::endl; 138 tinyxml2::XMLElement *images=doc.RootElement(); 139 tinyxml2::XMLElement *image =images->FirstChildElement("image"); 140 141 //圖片Url 142 std::string WebPicturedomain="http://cn.bing.com"; 143 std::string WebPictureUrl=""; 144 145 if(image!=NULL) 146 WebPictureUrl=image->FirstChildElement("url")->GetText(); 147 148 std::string WebPictureFullpath1366x768 =WebPicturedomain+WebPictureUrl; 149 std::cout<<"今日壁紙Url解析成功!"<<std::endl; 150 /*********************************************************/ 151 return WebPictureFullpath1366x768; 152 // //將1366x768換成1920x1080 153 // std::string WebPictureFullpath1920x1080 =replace_all_distinct(WebPictureFullpath1366x768,"1366x768","1920x1080"); 154 155 // return WebPictureFullpath1920x1080; 156 } 157 else 158 { 159 std::cout<<"Xml下載失敗!無法獲取圖片Url!請檢查網絡連接是否正常!"<<std::endl; 160 return "error"; 161 } 162 163 } 164 165 //從網絡上下載圖片并存儲到本地 166 std::string getPicture(std::string WebFullpath) 167 { 168 //本地存儲路徑 169 std::string LocalFolder="C:/bingPicture/"; 170 std::string Localeach=getYearMonthDay(); 171 std::string LocalFullpath=LocalFolder+Localeach+".jpg"; 172 173 if(URLDownloadToFileA(NULL, 174 WebFullpath.c_str(), 175 LocalFullpath.c_str(), 176 0, 177 NULL) 178 ==S_OK) 179 { 180 std::cout<<"今日壁紙下載成功!"<<std::endl; 181 182 /***************下面轉換圖片格式jpg->bmp******************/ 183 //臨時文件夾Tmp路徑 184 std::string TmpFolder="C:/bingPicture/Tmp/"; 185 //.bmp圖片路徑 186 std::string bmpFolder=TmpFolder+getYearMonthDay()+".bmp"; 187 LoadJpegFile(const_cast<char *>(LocalFullpath.c_str()),const_cast<char *>(bmpFolder.c_str())); 188 /*******************************************************/ 189 return bmpFolder; 190 } 191 else 192 { 193 std::cout<<"壁紙下載失敗!請檢查網絡連接是否正常!"<<std::endl; 194 return "error"; 195 } 196 } 197 198 //改變桌面背景成功后,刪除bmp文件和xml文件(只保留jpg文件),此步驟需要小心,避免刪除錯誤路徑下的內容 199 void deleteBmpAndXml() 200 { 201 //臨時文件夾Tmp路徑 202 std::string TmpFolder="C:/bingPicture/Tmp/"; 203 //.bmp圖片路徑 204 std::string bmpFolder=TmpFolder+getYearMonthDay()+".bmp"; 205 //xml文件路徑 206 std::string xmlFolder=TmpFolder+getYearMonthDay()+".xml"; 207 208 if(0==access("C:/bingPicture/Tmp/",0)) //判斷文件夾是否存在,若存在則刪除 209 { 210 //刪除bmp圖片 211 if(0==access(bmpFolder.c_str(),0)) 212 { 213 if(0==remove(bmpFolder.c_str())) 214 std::cout<<"刪除臨時bmp格式圖片成功!"<<std::endl; 215 else 216 std::cout<<"刪除臨時bmp格式圖片失敗!"<<std::endl; 217 } 218 else 219 std::cout<<"臨時bmp格式圖片不存在!"<<std::endl; 220 221 //刪除xml文件 222 if(0==access(xmlFolder.c_str(),0)) 223 { 224 if(0==remove(xmlFolder.c_str())) 225 std::cout<<"刪除xml文件成功!"<<std::endl; 226 else 227 std::cout<<"刪除xml文件失敗!"<<std::endl; 228 } 229 else 230 std::cout<<"xml文件不存在!"<<std::endl; 231 232 //刪除Tmp文件夾(注意此函數只能刪除空文件夾,因此要先刪除文件夾中的文件) 233 if(0==rmdir(TmpFolder.c_str())) 234 std::cout<<"臨時文件夾Tmp已刪除!"<<std::endl; 235 else 236 std::cout<<"臨時文件夾Tmp刪除失敗!"<<std::endl; 237 } 238 else 239 std::cout<<"臨時文件夾Tmp不存在!"<<std::endl; 240 241 } 242 243 //改變桌面背景(PictureFullpath:圖片完整路徑) 244 void changePicture(std::string PictureFullpath) 245 { 246 bool result=false; 247 result=SystemParametersInfoA(SPI_SETDESKWALLPAPER, 248 0, 249 (PVOID)PictureFullpath.c_str(), 250 0); 251 if(result==false) 252 { 253 std::cout<<"今日壁紙更新失敗!請聯系開發人員!"<<std::endl; 254 } 255 256 else 257 { 258 SystemParametersInfoA(SPI_SETDESKWALLPAPER, 259 0, 260 (PVOID)PictureFullpath.c_str(), 261 SPIF_SENDCHANGE); 262 //deleteBmpAndXml(); //windows8及其以上會變成黑色,把這條語句放到main最后面就沒問題,具體原因未知 263 system("cls"); 264 std::cout<<"version:1.0.0 (Author:xiaoxi666)"<<std::endl<<std::endl; 265 std::cout<<"今日壁紙更新成功!"<<std::endl<<std::endl; 266 std::cout<<"美好的一天開始啦!用心享受吧!"<<std::endl<<std::endl; 267 } 268 } 269 270 int main() 271 { 272 std::string startOrder=""; 273 std::cout<<"嗨!小伙伴!你的貼心壁紙小助手已啟動!將為你設置今日壁紙哦!"<<std::endl<<std::endl; 274 std::cout<<"請確保電腦網絡連接狀況良好,準備好后輸入go"<<std::endl<<std::endl; 275 std::cout<<"請輸入指令: "; 276 std::cin>>startOrder; 277 while("go"!=startOrder) 278 { 279 std::cout<<"哎呀輸錯了呢,重新輸入吧: "; 280 std::cin>>startOrder; 281 } 282 if("go"==startOrder) 283 { 284 createDir(); 285 changePicture(getPicture(getPicTureXmlAndUrl())); 286 } 287 288 /*******************************以下為個性化字幕輸出,與程序核心功能無關************************/ 289 std::string umua0=" ** ** ******** ******* ******* *** *** "; 290 std::string umua1=" ** ** ******** ******* ******* *** *** "; 291 std::string umua2=" ** ** ** ** ** ** *** ** *** *** "; 292 std::string umua3=" ** ** ** ** ** ** *** ** ** ** "; 293 std::string umua4=" ********* ******** ******* ******* * * "; 294 std::string umua5=" ********* ******** ******* ** ** "; 295 std::string umua6=" ** ** ** ** ** ** ** "; 296 std::string umua7=" ** ** ** ** ** ** ** "; 297 std::string umua8=" ** ** ** ** ** ** ** "; 298 std::string umua9=" ** ** ** ** ** ** ** "; 299 300 #define mua(n) std::cout<<umua##n<<std::endl; 301 std::cout<<std::endl<<std::endl; 302 mua(0);mua(1);mua(2);mua(3);mua(4);mua(5);mua(6);mua(7);mua(8);mua(9); 303 std::cout<<std::endl<<std::endl<<std::endl; 304 system("pause"); 305 /******************************************************************************************/ 306 deleteBmpAndXml(); 307 return 0; 308 } View Code

?

圖片格式轉換程序(這個是網上下載的C源碼,我改了一下接口,在此感謝)

jpeg.h

//頭文件jpeg.h,配合程序jpeg2bmp.c使用 //若用于c++程序中,請用extern "C"包含此頭文件 //功能:用于將圖片從jpg類型轉換為bmp類型,調用函數LoadJpegFile即可,參數1:jpg文件路徑;參數2:bmp文件路徑#define M_SOF0 0xc0 #define M_DHT 0xc4 #define M_EOI 0xd9 #define M_SOS 0xda #define M_DQT 0xdb #define M_DRI 0xdd #define M_APP0 0xe0static int Zig_Zag[8][8]={{0,1,5,6,14,15,27,28},{2,4,7,13,16,26,29,42},{3,8,12,17,25,30,41,43},{9,11,18,24,37,40,44,53},{10,19,23,32,39,45,52,54},{20,22,33,38,46,51,55,60},{21,34,37,47,50,56,59,61},{35,36,48,49,57,58,62,63}};#define W1 2841 /* 2048*sqrt(2)*cos(1*pi/16) */ #define W2 2676 /* 2048*sqrt(2)*cos(2*pi/16) */ #define W3 2408 /* 2048*sqrt(2)*cos(3*pi/16) */ #define W5 1609 /* 2048*sqrt(2)*cos(5*pi/16) */ #define W6 1108 /* 2048*sqrt(2)*cos(6*pi/16) */ #define W7 565 /* 2048*sqrt(2)*cos(7*pi/16) */int LoadJpegFile (char *JpegFileName,char *bmpFileName); View Code

jpeg2bmp.c

//jpeg.c //本程序用C語言編寫,若用于c++程序中,請用extern "C"包含頭文件jpeg.h //功能:用于將圖片從jpg類型轉換為bmp類型,調用函數LoadJpegFile即可,參數1:jpg文件路徑;參數2:bmp文件路徑 #include "jpeg.h" #include "memory.h" #include "math.h" #include "stdio.h" #include "windows.h"//macro definition #define WIDTHBYTES(i) ((i+31)/32*4) #define PI 3.1415926535 //define return value of function #define FUNC_OK 0 #define FUNC_MEMORY_ERROR 1 #define FUNC_FILE_ERROR 2 #define FUNC_FORMAT_ERROR 3 // //Jpeg functions //int LoadJpegFile (char *JpegFileName,char *bmpFileName); void showerror(int funcret); int InitTag(); void InitTable(); int Decode(); int DecodeMCUBlock(); int HufBlock(unsigned char dchufindex,unsigned char achufindex); int DecodeElement(); void IQtIZzMCUComponent(short flag); void IQtIZzBlock(short *s ,int * d,short flag); void GetYUV(short flag); void StoreBuffer(); BYTE ReadByte(); void Initialize_Fast_IDCT(); void Fast_IDCT(int * block); void idctrow(int * blk); void idctcol(int * blk); // //global variable declaration BITMAPFILEHEADER bf; BITMAPINFOHEADER bi; HBITMAP hBitmap=NULL; HGLOBAL hImgData=NULL; DWORD NumColors; DWORD LineBytes; DWORD ImgWidth=0 , ImgHeight=0; unsigned int PcxBytesPerLine; LPSTR lpPtr; // //variables used in jpeg function short SampRate_Y_H,SampRate_Y_V; short SampRate_U_H,SampRate_U_V; short SampRate_V_H,SampRate_V_V; short H_YtoU,V_YtoU,H_YtoV,V_YtoV; short Y_in_MCU,U_in_MCU,V_in_MCU; unsigned char *lpJpegBuf; unsigned char *lp; short qt_table[3][64]; short comp_num; BYTE comp_index[3]; BYTE YDcIndex,YAcIndex,UVDcIndex,UVAcIndex; BYTE HufTabIndex; short *YQtTable,*UQtTable,*VQtTable; BYTE And[9]={0,1,3,7,0xf,0x1f,0x3f,0x7f,0xff}; short code_pos_table[4][16],code_len_table[4][16]; unsigned short code_value_table[4][256]; unsigned short huf_max_value[4][16],huf_min_value[4][16]; short BitPos,CurByte; short rrun,vvalue; short MCUBuffer[10*64]; int QtZzMCUBuffer[10*64]; short BlockBuffer[64]; short ycoef,ucoef,vcoef; BOOL IntervalFlag; short interval=0; int Y[4*64],U[4*64],V[4*64]; DWORD sizei,sizej; short restart; static long iclip[1024]; static long *iclp;//// int LoadJpegFile (char *JpegFileName,char *bmpFileName) {HFILE hfjpg;DWORD ImgSize;DWORD JpegBufSize;HFILE hfbmp;HGLOBAL hJpegBuf;int funcret;LPBITMAPINFOHEADER lpImgData;if((hfjpg=_lopen(JpegFileName,OF_READ))==HFILE_ERROR){showerror(FUNC_FILE_ERROR);return 0;}//get jpg file lengthJpegBufSize=_llseek(hfjpg,0L,SEEK_END);//rewind to the beginning of the file_llseek(hfjpg,0L,SEEK_SET);if((hJpegBuf=GlobalAlloc(GHND,JpegBufSize))==NULL){_lclose(hfjpg);showerror(FUNC_MEMORY_ERROR);return 0;}lpJpegBuf=(unsigned char *)GlobalLock(hJpegBuf);_hread(hfjpg,(unsigned char *)lpJpegBuf,JpegBufSize);_lclose(hfjpg);InitTable();if((funcret=InitTag())!=FUNC_OK){GlobalUnlock(hJpegBuf);GlobalFree(hJpegBuf);showerror(funcret);return 0;}//create new bitmapfileheader and bitmapinfoheadermemset((char *)&bf,0,sizeof(BITMAPFILEHEADER)); memset((char *)&bi,0,sizeof(BITMAPINFOHEADER));bi.biSize=(DWORD)sizeof(BITMAPINFOHEADER);bi.biWidth=(LONG)(ImgWidth);bi.biHeight=(LONG)(ImgHeight);bi.biPlanes=1;bi.biBitCount=24;bi.biClrUsed=0;bi.biClrImportant=0;bi.biCompression=BI_RGB;NumColors=0;LineBytes=(DWORD)WIDTHBYTES(bi.biWidth*bi.biBitCount);ImgSize=(DWORD)LineBytes*bi.biHeight;bf.bfType=0x4d42;bf.bfSize=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+NumColors*sizeof(RGBQUAD)+ImgSize;bf.bfOffBits=(DWORD)(NumColors*sizeof(RGBQUAD)+sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER));if((hImgData=GlobalAlloc(GHND,ImgSize))==NULL){GlobalUnlock(hJpegBuf);GlobalFree(hJpegBuf);showerror(FUNC_MEMORY_ERROR);return FALSE;}lpImgData=(LPBITMAPINFOHEADER)GlobalLock(hImgData); lpPtr=(char *)lpImgData;if((SampRate_Y_H==0)||(SampRate_Y_V==0)){GlobalUnlock(hJpegBuf);GlobalFree(hJpegBuf);GlobalUnlock(hImgData);GlobalFree(hImgData);hImgData=NULL;showerror(FUNC_FORMAT_ERROR);return FALSE ;}funcret=Decode();if(funcret==FUNC_OK){hfbmp=_lcreat(bmpFileName,0);_lwrite(hfbmp,(LPSTR)&bf,sizeof(BITMAPFILEHEADER)); //寫BMP文件頭_lwrite(hfbmp,(LPSTR)&bi,sizeof(BITMAPINFOHEADER)); //寫BMP文件信息_lwrite(hfbmp,(LPSTR)lpImgData,ImgSize); //寫BMP位圖數據 _lclose(hfbmp);GlobalUnlock(hJpegBuf);GlobalFree(hJpegBuf);GlobalUnlock(hImgData);return TRUE;}else{GlobalUnlock(hJpegBuf);GlobalFree(hJpegBuf);GlobalUnlock(hImgData);GlobalFree(hImgData);hImgData=NULL;showerror(funcret);return FALSE;} } / void showerror(int funcret) {switch(funcret){case FUNC_MEMORY_ERROR:printf("Error alloc memory!\n"); exit(1);break;case FUNC_FILE_ERROR:printf("File not found!!\n"); exit(1);break;case FUNC_FORMAT_ERROR:printf("File format error!\n"); exit(1);break;} } //// int InitTag() {BOOL finish=FALSE;BYTE id;short llength;short i,j,k;short huftab1,huftab2;short huftabindex;BYTE hf_table_index;BYTE qt_table_index;BYTE comnum;unsigned char *lptemp;short ccount;lp=lpJpegBuf+2;while (!finish){id=*(lp+1);lp+=2;switch (id){case M_APP0:llength=MAKEWORD(*(lp+1),*lp);lp+=llength;break;case M_DQT:llength=MAKEWORD(*(lp+1),*lp);qt_table_index=(*(lp+2))&0x0f;lptemp=lp+3;if(llength<80){for(i=0;i<64;i++)qt_table[qt_table_index][i]=(short)*(lptemp++);}else{for(i=0;i<64;i++)qt_table[qt_table_index][i]=(short)*(lptemp++);qt_table_index=(*(lptemp++))&0x0f;for(i=0;i<64;i++)qt_table[qt_table_index][i]=(short)*(lptemp++);}lp+=llength; break;case M_SOF0:llength=MAKEWORD(*(lp+1),*lp);ImgHeight=MAKEWORD(*(lp+4),*(lp+3));ImgWidth=MAKEWORD(*(lp+6),*(lp+5));comp_num=*(lp+7);if((comp_num!=1)&&(comp_num!=3))return FUNC_FORMAT_ERROR;if(comp_num==3){comp_index[0]=*(lp+8);SampRate_Y_H=(*(lp+9))>>4;SampRate_Y_V=(*(lp+9))&0x0f;YQtTable=(short *)qt_table[*(lp+10)];comp_index[1]=*(lp+11);SampRate_U_H=(*(lp+12))>>4;SampRate_U_V=(*(lp+12))&0x0f;UQtTable=(short *)qt_table[*(lp+13)];comp_index[2]=*(lp+14);SampRate_V_H=(*(lp+15))>>4;SampRate_V_V=(*(lp+15))&0x0f;VQtTable=(short *)qt_table[*(lp+16)];}else{comp_index[0]=*(lp+8);SampRate_Y_H=(*(lp+9))>>4;SampRate_Y_V=(*(lp+9))&0x0f;YQtTable=(short *)qt_table[*(lp+10)];comp_index[1]=*(lp+8);SampRate_U_H=1;SampRate_U_V=1;UQtTable=(short *)qt_table[*(lp+10)];comp_index[2]=*(lp+8);SampRate_V_H=1;SampRate_V_V=1;VQtTable=(short *)qt_table[*(lp+10)];}lp+=llength; break;case M_DHT: llength=MAKEWORD(*(lp+1),*lp);if (llength<0xd0){huftab1=(short)(*(lp+2))>>4; //huftab1=0,1huftab2=(short)(*(lp+2))&0x0f; //huftab2=0,1huftabindex=huftab1*2+huftab2;lptemp=lp+3;for (i=0; i<16; i++)code_len_table[huftabindex][i]=(short)(*(lptemp++));j=0;for (i=0; i<16; i++)if(code_len_table[huftabindex][i]!=0){k=0;while(k<code_len_table[huftabindex][i]){code_value_table[huftabindex][k+j]=(short)(*(lptemp++));k++;}j+=k; }i=0;while (code_len_table[huftabindex][i]==0)i++;for (j=0;j<i;j++){huf_min_value[huftabindex][j]=0;huf_max_value[huftabindex][j]=0;}huf_min_value[huftabindex][i]=0;huf_max_value[huftabindex][i]=code_len_table[huftabindex][i]-1;for (j=i+1;j<16;j++){huf_min_value[huftabindex][j]=(huf_max_value[huftabindex][j-1]+1)<<1;huf_max_value[huftabindex][j]=huf_min_value[huftabindex][j]+code_len_table[huftabindex][j]-1;}code_pos_table[huftabindex][0]=0;for (j=1;j<16;j++)code_pos_table[huftabindex][j]=code_len_table[huftabindex][j-1]+code_pos_table[huftabindex][j-1];lp+=llength;} //ifelse{hf_table_index=*(lp+2);lp+=2;while (hf_table_index!=0xff){huftab1=(short)hf_table_index>>4; //huftab1=0,1huftab2=(short)hf_table_index&0x0f; //huftab2=0,1huftabindex=huftab1*2+huftab2;lptemp=lp+1;ccount=0;for (i=0; i<16; i++){code_len_table[huftabindex][i]=(short)(*(lptemp++));ccount+=code_len_table[huftabindex][i];}ccount+=17; j=0;for (i=0; i<16; i++)if(code_len_table[huftabindex][i]!=0){k=0;while(k<code_len_table[huftabindex][i]){code_value_table[huftabindex][k+j]=(short)(*(lptemp++));k++;}j+=k;}i=0;while (code_len_table[huftabindex][i]==0)i++;for (j=0;j<i;j++){huf_min_value[huftabindex][j]=0;huf_max_value[huftabindex][j]=0;}huf_min_value[huftabindex][i]=0;huf_max_value[huftabindex][i]=code_len_table[huftabindex][i]-1;for (j=i+1;j<16;j++){huf_min_value[huftabindex][j]=(huf_max_value[huftabindex][j-1]+1)<<1;huf_max_value[huftabindex][j]=huf_min_value[huftabindex][j]+code_len_table[huftabindex][j]-1;}code_pos_table[huftabindex][0]=0;for (j=1;j<16;j++)code_pos_table[huftabindex][j]=code_len_table[huftabindex][j-1]+code_pos_table[huftabindex][j-1];lp+=ccount;hf_table_index=*lp;} //while} //elsebreak;case M_DRI:llength=MAKEWORD(*(lp+1),*lp);restart=MAKEWORD(*(lp+3),*(lp+2));lp+=llength;break;case M_SOS:llength=MAKEWORD(*(lp+1),*lp);comnum=*(lp+2);if(comnum!=comp_num)return FUNC_FORMAT_ERROR;lptemp=lp+3;for (i=0;i<comp_num;i++){if(*lptemp==comp_index[0]){YDcIndex=(*(lptemp+1))>>4; //YYAcIndex=((*(lptemp+1))&0x0f)+2;}else{UVDcIndex=(*(lptemp+1))>>4; //U,VUVAcIndex=((*(lptemp+1))&0x0f)+2;}lptemp+=2;}lp+=llength;finish=TRUE;break;case M_EOI: return FUNC_FORMAT_ERROR;break;default:if ((id&0xf0)!=0xd0){llength=MAKEWORD(*(lp+1),*lp);lp+=llength;}else lp+=2;break;} //switch} //whilereturn FUNC_OK; } ///// void InitTable() {short i,j;sizei=sizej=0;ImgWidth=ImgHeight=0;rrun=vvalue=0;BitPos=0;CurByte=0;IntervalFlag=FALSE;restart=0;for(i=0;i<3;i++)for(j=0;j<64;j++)qt_table[i][j]=0;comp_num=0;HufTabIndex=0;for(i=0;i<3;i++)comp_index[i]=0;for(i=0;i<4;i++)for(j=0;j<16;j++){code_len_table[i][j]=0;code_pos_table[i][j]=0;huf_max_value[i][j]=0;huf_min_value[i][j]=0;}for(i=0;i<4;i++)for(j=0;j<256;j++)code_value_table[i][j]=0;for(i=0;i<10*64;i++){MCUBuffer[i]=0;QtZzMCUBuffer[i]=0;}for(i=0;i<4*64;i++){Y[i]=0;U[i]=0;V[i]=0; }for(i=0;i<64;i++)BlockBuffer[i]=0;ycoef=ucoef=vcoef=0; } / int Decode() {int funcret;Y_in_MCU=SampRate_Y_H*SampRate_Y_V;U_in_MCU=SampRate_U_H*SampRate_U_V;V_in_MCU=SampRate_V_H*SampRate_V_V;H_YtoU=SampRate_Y_H/SampRate_U_H;V_YtoU=SampRate_Y_V/SampRate_U_V;H_YtoV=SampRate_Y_H/SampRate_V_H;V_YtoV=SampRate_Y_V/SampRate_V_V;Initialize_Fast_IDCT();while((funcret=DecodeMCUBlock())==FUNC_OK){interval++;if((restart)&&(interval % restart==0))IntervalFlag=TRUE;elseIntervalFlag=FALSE;IQtIZzMCUComponent(0);IQtIZzMCUComponent(1);IQtIZzMCUComponent(2);GetYUV(0);GetYUV(1);GetYUV(2);StoreBuffer();sizej+=SampRate_Y_H*8;if(sizej>=ImgWidth){sizej=0;sizei+=SampRate_Y_V*8;}if ((sizej==0)&&(sizei>=ImgHeight))break;}return funcret; } ///// void GetYUV(short flag) {short H,VV;short i,j,k,h;int *buf;int *pQtZzMCU;switch(flag){case 0:H=SampRate_Y_H;VV=SampRate_Y_V;buf=Y;pQtZzMCU=QtZzMCUBuffer;break;case 1:H=SampRate_U_H;VV=SampRate_U_V;buf=U;pQtZzMCU=QtZzMCUBuffer+Y_in_MCU*64;break;case 2:H=SampRate_V_H;VV=SampRate_V_V;buf=V;pQtZzMCU=QtZzMCUBuffer+(Y_in_MCU+U_in_MCU)*64;break;}for (i=0;i<VV;i++)for(j=0;j<H;j++)for(k=0;k<8;k++)for(h=0;h<8;h++)buf[(i*8+k)*SampRate_Y_H*8+j*8+h]=*pQtZzMCU++; } /// void StoreBuffer() {short i,j;unsigned char *lpbmp;unsigned char R,G,B;int y,u,v,rr,gg,bb;for(i=0;i<SampRate_Y_V*8;i++){if((sizei+i)<ImgHeight){lpbmp=((unsigned char *)lpPtr+(DWORD)(ImgHeight-sizei-i-1)*LineBytes+sizej*3);for(j=0;j<SampRate_Y_H*8;j++){if((sizej+j)<ImgWidth){y=Y[i*8*SampRate_Y_H+j];u=U[(i/V_YtoU)*8*SampRate_Y_H+j/H_YtoU];v=V[(i/V_YtoV)*8*SampRate_Y_H+j/H_YtoV];rr=((y<<8)+18*u+367*v)>>8;gg=((y<<8)-159*u-220*v)>>8;bb=((y<<8)+411*u-29*v)>>8;R=(unsigned char)rr;G=(unsigned char)gg;B=(unsigned char)bb;if (rr&0xffffff00) if (rr>255) R=255; else if (rr<0) R=0;if (gg&0xffffff00) if (gg>255) G=255; else if (gg<0) G=0;if (bb&0xffffff00) if (bb>255) B=255; else if (bb<0) B=0;*lpbmp++=B;*lpbmp++=G;*lpbmp++=R;}else break;}}else break;} } /// int DecodeMCUBlock() {short *lpMCUBuffer;short i,j;int funcret;if (IntervalFlag){lp+=2;ycoef=ucoef=vcoef=0;BitPos=0;CurByte=0;}switch(comp_num){case 3:lpMCUBuffer=MCUBuffer;for (i=0;i<SampRate_Y_H*SampRate_Y_V;i++) //Y {funcret=HufBlock(YDcIndex,YAcIndex);if (funcret!=FUNC_OK)return funcret;BlockBuffer[0]=BlockBuffer[0]+ycoef;ycoef=BlockBuffer[0];for (j=0;j<64;j++)*lpMCUBuffer++=BlockBuffer[j];}for (i=0;i<SampRate_U_H*SampRate_U_V;i++) //U {funcret=HufBlock(UVDcIndex,UVAcIndex);if (funcret!=FUNC_OK)return funcret;BlockBuffer[0]=BlockBuffer[0]+ucoef;ucoef=BlockBuffer[0];for (j=0;j<64;j++)*lpMCUBuffer++=BlockBuffer[j];}for (i=0;i<SampRate_V_H*SampRate_V_V;i++) //V {funcret=HufBlock(UVDcIndex,UVAcIndex);if (funcret!=FUNC_OK)return funcret;BlockBuffer[0]=BlockBuffer[0]+vcoef;vcoef=BlockBuffer[0];for (j=0;j<64;j++)*lpMCUBuffer++=BlockBuffer[j];}break;case 1:lpMCUBuffer=MCUBuffer;funcret=HufBlock(YDcIndex,YAcIndex);if (funcret!=FUNC_OK)return funcret;BlockBuffer[0]=BlockBuffer[0]+ycoef;ycoef=BlockBuffer[0];for (j=0;j<64;j++)*lpMCUBuffer++=BlockBuffer[j];for (i=0;i<128;i++)*lpMCUBuffer++=0;break;default:return FUNC_FORMAT_ERROR;}return FUNC_OK; } // int HufBlock(BYTE dchufindex,BYTE achufindex) {short count=0;short i;int funcret;//dcHufTabIndex=dchufindex;funcret=DecodeElement();if(funcret!=FUNC_OK)return funcret;BlockBuffer[count++]=vvalue;//acHufTabIndex=achufindex;while (count<64){funcret=DecodeElement();if(funcret!=FUNC_OK)return funcret;if ((rrun==0)&&(vvalue==0)){for (i=count;i<64;i++)BlockBuffer[i]=0;count=64;}else{for (i=0;i<rrun;i++)BlockBuffer[count++]=0;BlockBuffer[count++]=vvalue;}}return FUNC_OK; } // int DecodeElement() {int thiscode,tempcode;unsigned short temp,valueex;short codelen;BYTE hufexbyte,runsize,tempsize,sign;BYTE newbyte,lastbyte;if(BitPos>=1){BitPos--;thiscode=(BYTE)CurByte>>BitPos;CurByte=CurByte&And[BitPos];}else{lastbyte=ReadByte();BitPos--;newbyte=CurByte&And[BitPos];thiscode=lastbyte>>7;CurByte=newbyte;}codelen=1;while ((thiscode<huf_min_value[HufTabIndex][codelen-1])||(code_len_table[HufTabIndex][codelen-1]==0)||(thiscode>huf_max_value[HufTabIndex][codelen-1])){if(BitPos>=1){BitPos--;tempcode=(BYTE)CurByte>>BitPos;CurByte=CurByte&And[BitPos];}else{lastbyte=ReadByte();BitPos--;newbyte=CurByte&And[BitPos];tempcode=(BYTE)lastbyte>>7;CurByte=newbyte;}thiscode=(thiscode<<1)+tempcode;codelen++;if(codelen>16)return FUNC_FORMAT_ERROR;} //whiletemp=thiscode-huf_min_value[HufTabIndex][codelen-1]+code_pos_table[HufTabIndex][codelen-1];hufexbyte=(BYTE)code_value_table[HufTabIndex][temp];rrun=(short)(hufexbyte>>4);runsize=hufexbyte&0x0f;if(runsize==0){vvalue=0;return FUNC_OK;}tempsize=runsize;if(BitPos>=runsize){BitPos-=runsize;valueex=(BYTE)CurByte>>BitPos;CurByte=CurByte&And[BitPos];}else{valueex=CurByte;tempsize-=BitPos;while(tempsize>8){lastbyte=ReadByte();valueex=(valueex<<8)+(BYTE)lastbyte;tempsize-=8;} //whilelastbyte=ReadByte();BitPos-=tempsize;valueex=(valueex<<tempsize)+(lastbyte>>BitPos);CurByte=lastbyte&And[BitPos];} //elsesign=valueex>>(runsize-1);if(sign)vvalue=valueex;else{valueex=valueex^0xffff;temp=0xffff<<runsize;vvalue=-(short)(valueex^temp);}return FUNC_OK; } / void IQtIZzMCUComponent(short flag) {short H,VV;short i,j;int *pQtZzMCUBuffer;short *pMCUBuffer;switch(flag){case 0:H=SampRate_Y_H;VV=SampRate_Y_V;pMCUBuffer=MCUBuffer;pQtZzMCUBuffer=QtZzMCUBuffer;break;case 1:H=SampRate_U_H;VV=SampRate_U_V;pMCUBuffer=MCUBuffer+Y_in_MCU*64;pQtZzMCUBuffer=QtZzMCUBuffer+Y_in_MCU*64;break;case 2:H=SampRate_V_H;VV=SampRate_V_V;pMCUBuffer=MCUBuffer+(Y_in_MCU+U_in_MCU)*64;pQtZzMCUBuffer=QtZzMCUBuffer+(Y_in_MCU+U_in_MCU)*64;break;}for(i=0;i<VV;i++)for (j=0;j<H;j++)IQtIZzBlock(pMCUBuffer+(i*H+j)*64,pQtZzMCUBuffer+(i*H+j)*64,flag); } // void IQtIZzBlock(short *s ,int * d,short flag) {short i,j;short tag;short *pQt;int buffer2[8][8];int *buffer1;short offset;switch(flag){case 0:pQt=YQtTable;offset=128;break;case 1:pQt=UQtTable;offset=0;break;case 2:pQt=VQtTable;offset=0;break;}for(i=0;i<8;i++)for(j=0;j<8;j++){tag=Zig_Zag[i][j];buffer2[i][j]=(int)s[tag]*(int)pQt[tag];}buffer1=(int *)buffer2;Fast_IDCT(buffer1);for(i=0;i<8;i++)for(j=0;j<8;j++)d[i*8+j]=buffer2[i][j]+offset; } /// void Fast_IDCT(int * block) {short i;for (i=0; i<8; i++)idctrow(block+8*i);for (i=0; i<8; i++)idctcol(block+i); } /// BYTE ReadByte() {BYTE i;i=*(lp++);if(i==0xff)lp++;BitPos=8;CurByte=i;return i; } /// void Initialize_Fast_IDCT() {short i;iclp = iclip+512;for (i= -512; i<512; i++)iclp[i] = (i<-256) ? -256 : ((i>255) ? 255 : i); } void idctrow(int * blk) {int x0, x1, x2, x3, x4, x5, x6, x7, x8;//intcutif (!((x1 = blk[4]<<11) | (x2 = blk[6]) | (x3 = blk[2]) |(x4 = blk[1]) | (x5 = blk[7]) | (x6 = blk[5]) | (x7 = blk[3]))){blk[0]=blk[1]=blk[2]=blk[3]=blk[4]=blk[5]=blk[6]=blk[7]=blk[0]<<3;return;}x0 = (blk[0]<<11) + 128; // for proper rounding in the fourth stage //first stagex8 = W7*(x4+x5);x4 = x8 + (W1-W7)*x4;x5 = x8 - (W1+W7)*x5;x8 = W3*(x6+x7);x6 = x8 - (W3-W5)*x6;x7 = x8 - (W3+W5)*x7;//second stagex8 = x0 + x1;x0 -= x1;x1 = W6*(x3+x2);x2 = x1 - (W2+W6)*x2;x3 = x1 + (W2-W6)*x3;x1 = x4 + x6;x4 -= x6;x6 = x5 + x7;x5 -= x7;//third stagex7 = x8 + x3;x8 -= x3;x3 = x0 + x2;x0 -= x2;x2 = (181*(x4+x5)+128)>>8;x4 = (181*(x4-x5)+128)>>8;//fourth stageblk[0] = (x7+x1)>>8;blk[1] = (x3+x2)>>8;blk[2] = (x0+x4)>>8;blk[3] = (x8+x6)>>8;blk[4] = (x8-x6)>>8;blk[5] = (x0-x4)>>8;blk[6] = (x3-x2)>>8;blk[7] = (x7-x1)>>8; } // void idctcol(int * blk) {int x0, x1, x2, x3, x4, x5, x6, x7, x8;//intcutif (!((x1 = (blk[8*4]<<8)) | (x2 = blk[8*6]) | (x3 = blk[8*2]) |(x4 = blk[8*1]) | (x5 = blk[8*7]) | (x6 = blk[8*5]) | (x7 = blk[8*3]))){blk[8*0]=blk[8*1]=blk[8*2]=blk[8*3]=blk[8*4]=blk[8*5]=blk[8*6]=blk[8*7]=iclp[(blk[8*0]+32)>>6];return;}x0 = (blk[8*0]<<8) + 8192;//first stagex8 = W7*(x4+x5) + 4;x4 = (x8+(W1-W7)*x4)>>3;x5 = (x8-(W1+W7)*x5)>>3;x8 = W3*(x6+x7) + 4;x6 = (x8-(W3-W5)*x6)>>3;x7 = (x8-(W3+W5)*x7)>>3;//second stagex8 = x0 + x1;x0 -= x1;x1 = W6*(x3+x2) + 4;x2 = (x1-(W2+W6)*x2)>>3;x3 = (x1+(W2-W6)*x3)>>3;x1 = x4 + x6;x4 -= x6;x6 = x5 + x7;x5 -= x7;//third stagex7 = x8 + x3;x8 -= x3;x3 = x0 + x2;x0 -= x2;x2 = (181*(x4+x5)+128)>>8;x4 = (181*(x4-x5)+128)>>8;//fourth stageblk[8*0] = iclp[(x7+x1)>>14];blk[8*1] = iclp[(x3+x2)>>14];blk[8*2] = iclp[(x0+x4)>>14];blk[8*3] = iclp[(x8+x6)>>14];blk[8*4] = iclp[(x8-x6)>>14];blk[8*5] = iclp[(x0-x4)>>14];blk[8*6] = iclp[(x3-x2)>>14];blk[8*7] = iclp[(x7-x1)>>14]; }//main( ) //{ // LoadJpegFile("test.jpg"); //} View Code

xml解析,我用的是TinyXml2開源庫,這個就不貼源碼了。

?

關于Qt項目圖標制作

我用的Qt版本是4.8.5。

步驟如下:

  • 在Qt工程目錄下新建一個文本文件,并將其名稱改為 *.rc (名字任取)
  • 將你的圖標文件.ico添加到項目中
  • 打開該 rc 文件,在該rc文件里面加入以下一行文本(將文本中的*換成你的圖標的名字):

    IDI_ICON ICON DISCARDABLE "*.ico"
  • 在項目文件.pro中加入以下文本(將*換成你的rc文件名字):
  • ?     RC_FILE = \
    ??         ? *.rc

    ????? 5. 重新編譯工程即可

       

    關于Qt項目的發布

    Qt項目發布最麻煩的就是動態依賴庫,常用的工具是hap-depends,它可以查看軟件的依賴庫(*.dll),直接用它打開你的.exe文件,查看缺失哪些.dll文件,找到它們后和exe放在相同目錄即可。

    當然,發布之前需要經過多個平臺的測試。

    ?

    最后祝大家生活愉快!

    轉載于:https://www.cnblogs.com/xiaoxi666/p/6544478.html

    總結

    以上是生活随笔為你收集整理的【开源程序(C++)】获取bing图片并自动设置为电脑桌面背景的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    91最新国产| 久草在线手机视频 | 国产精品video爽爽爽爽 | 欧美日韩高清国产 | 国产精品一区二区三区免费看 | 国产高清网站 | 在线免费观看亚洲视频 | 91精品视频一区 | 中国一级片在线播放 | 日本中文字幕在线电影 | 国产中出在线观看 | 黄网站www| 亚洲男人天堂2018 | 在线a人片免费观看视频 | 在线视频 区 | 久久精品国产一区二区电影 | 最新国产在线视频 | 日韩精品第一区 | 91九色视频在线观看 | 在线有码中文字幕 | 久久免费a| 久久久久99精品国产片 | 中文字幕刺激在线 | 国产精品久久久久久99 | 天天色天天搞 | 在线观看的黄色 | 成人午夜免费福利 | 国产免费精彩视频 | 黄色在线免费观看网址 | 99精品视频网站 | 久久综合欧美精品亚洲一区 | 国产性天天综合网 | 国产在线a不卡 | 国产精品激情偷乱一区二区∴ | 国模一区二区三区四区 | 欧美日韩国产在线精品 | 久青草视频在线观看 | 国产一级在线免费观看 | 久视频在线播放 | 92中文资源在线 | 日韩av影视 | 人人干人人爽 | 国内精品久久久精品电影院 | 97香蕉超级碰碰久久免费软件 | 亚洲激情精品 | 国产网红在线 | 国产在线观看免费观看 | 精品成人在线 | 国产69精品久久久久久久久久 | 免费午夜av| 一区二区精品视频 | 91精品免费在线视频 | 欧美男男tv网站 | 欧美精品一级视频 | 日韩有码第一页 | 粉嫩av一区二区三区入口 | 久久中文精品视频 | 国产成人在线网站 | 黄色毛片视频免费观看中文 | 99久久精品免费看国产四区 | 五月婷香蕉久色在线看 | 国产精品色在线 | 91热在线 | av黄色免费在线观看 | 亚洲,国产成人av | 欧美日韩免费在线视频 | av观看在线观看 | 天天色天天草天天射 | 五月婷社区 | 在线观看亚洲精品视频 | 亚洲自拍偷拍色图 | 欧美激情第十页 | 91在线影视| 中文字幕 国产精品 | 欧美日韩激情视频8区 | 狠狠干我| 91福利视频一区 | 婷婷丁香国产 | 夜夜婷婷 | 国产麻豆果冻传媒在线观看 | 黄色毛片视频免费观看中文 | 久久综合免费视频影院 | 狠色在线| 久久久天天操 | www.xxxx变态.com | 日韩和的一区二在线 | 国产一区二区三区四区大秀 | 好看的国产精品视频 | 五月天亚洲综合 | 免费观看一级成人毛片 | 亚洲成av人影院 | 日韩一级电影网站 | 精品在线视频一区二区三区 | 亚洲狠狠操 | 国产精品成人一区二区三区 | 国内小视频在线观看 | 美女精品网站 | 免费看黄网站在线 | 天天综合网天天 | 色噜噜色噜噜 | 久久精彩 | 一性一交视频 | 一级黄色片在线免费观看 | 黄色免费网 | 国产精品一区二区久久久 | 亚洲欧美在线观看视频 | 日韩精品视频在线免费观看 | 97在线免费视频观看 | 午夜精品一区二区三区可下载 | 亚洲经典在线 | 天天综合日日夜夜 | 亚洲成熟女人毛片在线 | 日韩精品一区二区久久 | 日韩欧美国产视频 | av综合站| 手机成人av | 欧美日韩一区二区在线观看 | 女人18毛片a级毛片一区二区 | 欧美成人黄 | 中文字幕av一区二区三区四区 | 国产精品99久久久久久小说 | 亚洲综合色激情五月 | 国产精品成人av在线 | 奇米影音四色 | 久久视频国产 | 亚洲黄色片| 国产精品久久久久久久7电影 | 欧美日韩xxxxx | 国产精品精品国产 | 伊人久久精品久久亚洲一区 | 日韩在线观看第一页 | 日韩av电影免费在线观看 | 国产专区一 | 五月婷婷激情网 | 片黄色毛片黄色毛片 | 免费日韩av电影 | 日韩精品久久久久 | 1区2区3区在线观看 三级动图 | 国产高清av在线播放 | 久免费视频 | 91在线视频在线 | 国产99在线 | 国产精品久久久久久一区二区三区 | 亚洲精品久久久久久久不卡四虎 | 国产夫妻性生活自拍 | 69av国产| 久久图| 香蕉视频免费在线播放 | 亚洲一区二区天堂 | 91视频在线免费 | 久99久精品视频免费观看 | 日本xxxx裸体xxxx17 | 一区二区三区四区精品 | 91在线区 | 成人午夜影院在线观看 | 精品v亚洲v欧美v高清v | 福利电影一区二区 | 亚洲成a人片77777kkkk1在线观看 | 五月婷香蕉久色在线看 | 黄色亚洲在线 | 九九九热精品免费视频观看网站 | 色婷婷综合久久久久中文字幕1 | 天天干天天干天天 | 国产精品麻豆免费版 | 欧美日韩一区二区免费在线观看 | 国产片免费在线观看视频 | 亚洲综合黄色 | 国产偷国产偷亚洲清高 | 人人网av| 五月开心婷婷 | 欧美日韩天堂 | 五月花婷婷 | 国产日韩在线观看一区 | 久久精品国产精品 | 中文字幕乱视频 | 99视频国产在线 | 激情综合婷婷 | 欧美激情综合五月 | 欧美日韩在线播放 | 亚洲视屏在线播放 | 久久深夜福利免费观看 | 日韩免费在线观看视频 | 国产免费叼嘿网站免费 | 99精品小视频 | av大全免费在线观看 | 国产午夜三级一区二区三桃花影视 | 久久久久国产成人精品亚洲午夜 | 久久综合色天天久久综合图片 | 中文字幕视频网站 | 顶级欧美色妇4khd | 精品黄色在线 | 在线成人短视频 | 天天操天天操天天操天天 | 97视频精品| 欧美美女激情18p | 亚洲国产中文字幕 | 日韩av电影网站在线观看 | 国产精品麻豆视频 | 黄色在线看网站 | 日韩高清不卡一区二区三区 | 色婷婷综合成人av | 五月婷婷激情网 | 日批视频国产 | 亚洲五月 | 成人动漫精品一区二区 | 粉嫩av一区二区三区四区五区 | 亚洲综合五月 | 美女免费视频一区二区 | 午夜在线免费观看视频 | 久草在线这里只有精品 | 国产又黄又硬又爽 | 国产品久精国精产拍 | 国产视频 亚洲精品 | 激情综合狠狠 | 天天摸天天弄 | 97av视频在线 | 久久激情视频 久久 | 亚洲精品午夜久久久久久久 | 草久视频在线观看 | 在线免费观看的av | 欧美成人h版电影 | 久久久久免费精品 | 久久免费精品国产 | 欧美最猛性xxxxx(亚洲精品) | 久草爱 | 国产亚洲精品成人av久久ww | 国产韩国精品一区二区三区 | 久久综合九色综合97婷婷女人 | 久久这里有精品 | 月下香电影 | 在线 成人 | 成人黄色小说在线观看 | 天天色天天 | av片中文字幕 | 国产91精品欧美 | 国产黄色免费看 | 国产极品尤物在线 | 国产糖心vlog在线观看 | 综合网婷婷 | 高清av影院| 91色在线观看 | 韩国av电影在线观看 | 国产免费三级在线观看 | 国产香蕉久久精品综合网 | 在线精品一区二区 | av久久在线 | 激情偷乱人伦小说视频在线观看 | 国产a视频免费观看 | 国产字幕在线观看 | 91久久爱热色涩涩 | 日韩激情视频在线 | 欧美最猛性xxxx | 一区二区三区四区精品 | 国产亚洲婷婷免费 | 韩国av在线播放 | 久草精品视频在线播放 | 91丨九色丨高潮丰满 | 国产我不卡 | 欧美日韩一区久久 | 久久精品三级 | 激情视频一区二区三区 | 成人久久久精品国产乱码一区二区 | 丰满少妇久久久 | 中文字幕网站 | 午夜美女网站 | 69av免费视频 | 欧美性一级观看 | 亚洲日本国产 | 欧洲精品亚洲精品 | 色综合五月| 国产精品2019 | 999成人精品 | 日日天天狠狠 | 超碰成人av | 13日本xxxxxⅹxxx20 | 久久99亚洲精品久久 | 在线黄色免费av | 天天插天天操天天干 | 亚洲精品国产成人av在线 | 久久久久久免费 | 精品女同一区二区三区在线观看 | 91亚洲精品久久久蜜桃借种 | 久久精品91久久久久久再现 | 99资源网 | 免费中文字幕在线观看 | 98福利在线 | 免费看国产曰批40分钟 | 毛片随便看 | 国产精品门事件 | 毛片在线播放网址 | 亚洲欧美日韩不卡 | 日本中文字幕在线视频 | 91一区二区三区在线观看 | 欧美性久久久 | 国产色在线视频 | 99久久精品久久久久久动态片 | 久久国产精彩视频 | 日韩免费看片 | 亚洲精品毛片一级91精品 | 亚洲美女在线国产 | 久草视频手机在线 | 亚洲高清网站 | 国产精品video | av中文天堂在线 | 国产女做a爱免费视频 | 超级碰99 | 国产91免费观看 | 国产在线色 | 久久激情小视频 | 久久精品成人热国产成 | 一区精品在线 | 蜜臀av性久久久久av蜜臀三区 | 国产a精品 | 国产一区二区网址 | 91传媒在线 | 国产在线91在线电影 | 最近中文字幕大全 | 亚洲一区二区视频 | 国产精品1区 | 欧美精品久久久久久久久老牛影院 | 免费在线一区二区 | 中文字幕中文字幕在线一区 | 精品国产三级a∨在线欧美 免费一级片在线观看 | 国产成人黄色网址 | 久久视频网址 | 亚洲精品在线免费播放 | 免费观看av网站 | 国产欧美日韩精品一区二区免费 | 国产成人亚洲在线电影 | 天天干一干 | 97超碰.com | 一级免费看视频 | 91视频啊啊啊| 99久久久国产精品免费99 | 99久久国产免费,99久久国产免费大片 | 国产网红在线观看 | 99精品乱码国产在线观看 | 探花视频免费在线观看 | 欧美一区二区三区免费观看 | 国产手机精品视频 | 亚洲精品视频在线免费播放 | 日本中文字幕网站 | 中文字幕在线观看你懂的 | 亚洲女欲精品久久久久久久18 | 亚洲精品乱码久久久久久蜜桃91 | 久久免费电影 | 亚洲欧美偷拍另类 | 美女视频黄免费网站 | 丁香一区二区 | 亚洲激情校园春色 | 久久久午夜精品福利内容 | 99精品在线免费观看 | 日韩中文字幕在线看 | 欧美一区免费观看 | 欧美日韩另类在线观看 | 亚洲成人精品在线 | 精品国自产在线观看 | 精品国产一区二区三区久久久久久 | 人人干狠狠操 | 欧美成人理伦片 | 欧美成人影音 | 国产综合片 | 一区二区中文字幕在线 | 91麻豆精品一区二区三区 | 手机在线黄色网址 | 久久久这里有精品 | 在线国产视频一区 | 国产婷婷在线观看 | 综合影视| 亚洲国产成人在线播放 | 91精品一区二区三区久久久久久 | 黄色a级片在线观看 | 三级av在线免费观看 | 久草在线高清视频 | 色噜噜日韩精品一区二区三区视频 | 久久久在线免费观看 | 色资源二区在线视频 | 亚洲在线不卡 | 国产精品一区在线观看 | 欧美日韩精品久久久 | 在线观看岛国av | 久久不射电影网 | 国产精品岛国久久久久久久久红粉 | 国产精品国产三级国产aⅴ入口 | 婷婷社区五月天 | 91中文字幕视频 | av中文字幕av | av3级在线 | 国产精品完整版 | 中文字幕在线网 | 中文字幕亚洲情99在线 | 欧美日韩免费视频 | 91久久精品一区二区三区 | 狠狠躁夜夜躁人人爽视频 | 日韩伦理片hd | 97色狠狠| 久久国产午夜精品理论片最新版本 | 狠狠色丁香婷婷综合 | 亚洲免费av在线 | 免费国产视频 | 免费观看黄 | 婷婷丁香六月 | 日韩资源在线播放 | av网站在线观看免费 | 在线va视频| 色开心 | 99re视频在线观看 | 国产免费观看久久黄 | 97视频久久久 | 欧美日韩国产精品一区二区亚洲 | 欧美日韩国产精品久久 | 日韩h在线观看 | 国产91免费在线 | 欧美,日韩 | 欧美一级免费高清 | 黄色亚洲在线 | 久久国产精品色婷婷 | 在线观看中文字幕2021 | 日本高清xxxx| 麻豆影视在线免费观看 | 最新午夜电影 | 97国产在线 | 天天操天天吃 | 中文永久免费观看 | 特级黄色一级 | 99在线免费观看视频 | 久久久麻豆精品一区二区 | 成人91视频 | www.久久视频 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 97色在线观看 | 国产精品国产三级国产专区53 | 精品成人网 | 久久人人干 | 亚洲一二三久久 | 天堂av免费 | 在线 国产 日韩 | 国产69久久 | 久久久久国产a免费观看rela | 人人添人人 | 色偷偷人人澡久久超碰69 | 99精品视频在线看 | 亚洲清纯国产 | 天天射天天干天天操 | 亚洲视屏在线播放 | 亚洲五月六月 | 国产欧美精品一区二区三区 | 超碰在线91| 黄色1级大片 | 最新日韩中文字幕 | 亚洲1区 在线 | 日本久久久久久久久久久 | 在线观看国产区 | 久久亚洲影视 | 在线免费性生活片 | 久久男女视频 | 在线一区电影 | 国产99久久久国产精品成人免费 | 欧美a免费 | 中文字幕在线观看视频一区二区三区 | 91av视频在线观看免费 | av一级在线| 久久av影院| 色老板在线视频 | 国产精品毛片久久蜜 | 日日操夜| 美女视频永久黄网站免费观看国产 | av日韩国产 | 91亚洲精品久久久久图片蜜桃 | 黄色大全免费观看 | 另类老妇性bbwbbw高清 | 91在线小视频 | 精品一二 | 久久亚洲私人国产精品va | 天天亚洲 | 亚洲精品tv久久久久久久久久 | 国产一区二区精品久久91 | 久久新 | 三级av网 | 91精品国产91p65 | 69亚洲精品 | 日批网站在线观看 | 免费网站看v片在线a | 99精品视频99 | avhd高清在线谜片 | 免费看黄的 | 久草在线视频免赞 | 日韩高清dvd | 国内久久久| 国产精品久久久久永久免费 | 国产一级a毛片视频爆浆 | 欧美一级激情 | 日韩二区在线播放 | 一区二区三区视频在线 | 一区二区三区免费在线观看 | 亚洲精品乱码久久久久久蜜桃不爽 | 五月婷婷激情 | 国产人成精品一区二区三 | 欧美一级性生活视频 | 中文字幕三区 | 国产日韩欧美在线观看视频 | 日韩免费在线观看网站 | 美女网站视频免费都是黄 | 久久久久99精品国产片 | 亚洲天堂激情 | av片中文| 开心激情五月网 | av综合网址 | 国产精品久久久久久久久久直播 | 中文字幕在线影院 | 激情综合久久 | 欧美一区二区三区在线看 | 亚洲精品一区二区网址 | 精品国产伦一区二区三区免费 | 在线观看国产一区 | 亚洲视频1 | 国产视频中文字幕在线观看 | 色噜噜狠狠狠狠色综合 | 久久久精品欧美一区二区免费 | 成人在线播放av | 在线观看免费一区 | 精品国产一区二区三区久久久蜜臀 | 91九色免费视频 | 成人污视频在线观看 | 国产在线观看中文字幕 | 欧美在线你懂的 | 欧美福利片在线观看 | 成人福利在线 | www.久久成人 | 欧美在线久久 | 精品久久久久久综合 | 亚洲91精品 | 国产又黄又爽无遮挡 | 久久福利电影 | 中国一级片免费看 | 亚洲日本精品视频 | 亚洲天堂激情 | 在线黄av| 怡春院av| 午夜神马福利 | 国产午夜精品福利视频 | 亚洲一二视频 | 国产亚洲一区 | 91视频免费看网站 | 精品一区精品二区 | 91精品欧美| 免费看黄色91 | 深夜福利视频一区二区 | 天天干.com | 91在线影院 | 在线观看亚洲精品 | 久久高清国产 | 国产精品高潮呻吟久久久久 | 久久综合免费视频影院 | 成人黄色在线看 | 精品国产一区二区在线 | 亚洲精品一区二区三区高潮 | 韩国精品在线 | 亚洲精品videossex少妇 | 国产精品美女视频网站 | 国产精品久久二区 | 黄色成人av在线 | 黄色毛片视频 | 日本丶国产丶欧美色综合 | 99婷婷| 国产精成人品免费观看 | 久久高清免费视频 | 亚洲色图色 | 日韩精品久久一区二区 | 热re99久久精品国产99热 | 69热国产视频 | 久久久久日本精品一区二区三区 | 狠狠狠干狠狠 | 日日干狠狠操 | 91av国产视频 | 天天干天天玩天天操 | 国产高清在线免费视频 | 国产视频一区精品 | 国产黄色片免费 | 久久精品一二三 | 美女免费黄网站 | 亚洲激情综合 | 精品国产一二区 | 久久久久亚洲精品中文字幕 | 天天舔天天射天天操 | 91九色在线视频 | 麻豆91在线观看 | a视频在线看| 久久免费精品国产 | 人人精品久久 | 色播99| 成片免费观看视频999 | 国产1区2区 | 日韩黄色一级电影 | 国产精品自在欧美一区 | 大荫蒂欧美视频另类xxxx | 国内视频1区 | 91视频观看免费 | 毛片基地黄久久久久久天堂 | 天天干天天操天天爱 | 精品久久久久久久 | 国产在线观看免 | 香蕉视频在线视频 | 人人舔人人干 | 亚州av一区 | 在线观看视频在线观看 | 国产成人精品一区二区三区福利 | 成人av免费播放 | 日韩色视频在线观看 | 夜夜骑天天操 | 成人一区电影 | 精品一区二区三区电影 | 中文字幕精品www乱入免费视频 | 欧美国产精品久久久久久免费 | 九九九九九九精品 | 久久久久一区 | 亚洲人人射 | 国产精品原创 | 五月天,com | 91免费黄视频 | 成人在线免费视频 | 国产成人一区二区三区在线观看 | 摸bbb搡bbb搡bbbb | 五月丁色 | 亚洲欧洲精品在线 | 亚洲成年片 | 国产v在线 | 国产精品成 | 一级理论片在线观看 | 手机av在线网站 | 麻豆va一区二区三区久久浪 | 人人爽人人乐 | 欧美孕妇与黑人孕交 | 99热精品久久| 999成人国产| 精品在线免费观看 | 国产精品久久久久久一区二区三区 | 男女日麻批 | jizz18欧美18| 久久激情五月丁香伊人 | 一区二区 不卡 | 日韩欧美视频在线播放 | 久黄色| 又黄又色又爽 | 四虎视频| 国产成人一级电影 | 国产黄色大片 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | 91中文字幕在线观看 | 一区二区三区四区在线免费观看 | 久久av中文字幕片 | 婷婷激情五月综合 | 久久男女视频 | 天天综合精品 | 成人av地址| 国产精品美女在线观看 | 成人午夜免费剧场 | 日韩在线视频一区 | 欧美极品裸体 | 五月天激情视频 | 精品国产一区二区三区免费 | 99久久日韩精品免费热麻豆美女 | 天天草天天操 | 五月婷婷在线视频观看 | 色播激情五月 | 日本69hd | 久草精品视频在线播放 | 九九久久国产精品 | 免费看国产曰批40分钟 | 亚洲 欧美 91 | 亚洲综合五月天 | 久99久精品视频免费观看 | 麻豆国产精品一区二区三区 | 在线导航av | 国产黄色特级片 | 久久国产精品久久精品 | 久草在线网址 | 97伊人网| 精品一区二区影视 | 三级在线视频观看 | 欧美日本中文字幕 | 91九色免费视频 | av手机版 | 亚洲一区欧美精品 | 国产精品一区二区吃奶在线观看 | 婷婷丁香在线视频 | 久久久视屏| 97成人精品视频在线观看 | 国产精品婷婷午夜在线观看 | 婷婷婷国产在线视频 | 草久久久久 | 天天操 夜夜操 | 最近日本mv字幕免费观看 | 天天拍天天草 | 美女搞黄国产视频网站 | 91热在线 | 国产视频网站在线观看 | 国产视频亚洲 | 久久久精品福利视频 | 久久精品久久久久 | 色综合天天综合 | 国产精品 999 | 欧美亚洲国产精品久久高清浪潮 | 亚洲经典精品 | av亚洲产国偷v产偷v自拍小说 | 国产91电影在线观看 | 久久激情视频 久久 | 国产福利在线不卡 | 日本三级全黄少妇三2023 | 一级黄色大片在线观看 | 国产视频黄 | 18久久久久久 | 亚洲午夜剧场 | 欧美黄色免费 | 美女黄网站视频免费 | 久久99在线观看 | 国产aa免费视频 | 久久无码av一区二区三区电影网 | 亚洲精品乱码久久 | 国产国产人免费人成免费视频 | 日韩欧美高清在线观看 | 国产精品久久久久久久久蜜臀 | 在线黄色av| 久久久影片 | 福利一区视频 | 99中文字幕在线观看 | 91.精品高清在线观看 | 欧美日韩国产综合一区二区 | 青青五月天 | 国产精品成久久久久三级 | 黄色.com| 91精品小视频| 91九色在线播放 | 国产精品久久久久影视 | 激情久久婷婷 | 手机av看片 | 中文字幕日本电影 | 91亚洲精品久久久中文字幕 | 日本韩国精品一区二区在线观看 | 丁香花中文在线免费观看 | 亚洲jizzjizz日本少妇 | 天天射一射 | 久久久久久久久毛片 | 午夜电影久久久 | 久久久久久国产精品免费 | 欧美日韩aaaa | 国产精品视频你懂的 | 激情婷婷在线 | 国产精品网站一区二区三区 | 91视频国产高清 | 日韩理论片中文字幕 | 精品福利视频在线 | 人人干人人添 | 亚洲情影院| 手机在线中文字幕 | www好男人 | 五月天狠狠操 | 久久国产剧场电影 | 一区二区三区 中文字幕 | www狠狠| 狠狠色综合网站久久久久久久 | 色婷婷国产精品 | 91亚洲狠狠婷婷综合久久久 | 久久亚洲免费视频 | 亚洲精品一区二区三区四区高清 | 成人小视频在线 | 国产日韩中文在线 | 精品久久综合 | 97视频在线观看成人 | 日韩中文字幕免费视频 | 视频一区亚洲 | 在线你懂 | 久久精品视频在线免费观看 | 免费视频 三区 | 免费看日韩片 | 国产不卡精品 | 99精品久久精品一区二区 | 欧美另类z0zx | 人人干人人超 | 日韩性xxxx| 久久国产精品免费视频 | 久久av中文字幕片 | 91亚洲激情 | 亚洲精品国产精品国自产观看 | 日本三级不卡 | 一区二区精 | 五月婷婷开心中文字幕 | 国产精品嫩草69影院 | 六月丁香激情综合色啪小说 | 成年人在线免费视频观看 | 最新国产中文字幕 | 亚洲乱码在线 | 久日精品| 狠狠色狠狠色终合网 | 国产一区二区精品在线 | 日韩在线国产 | 日韩电影久久 | 亚洲成人av片在线观看 | 成人在线视频论坛 | 狠狠色丁香久久婷婷综 | 日韩在线观看中文 | 一级黄毛片 | 国产在线美女 | 青青草华人在线视频 | 久久国产精品一国产精品 | 天天操夜夜叫 | 日本激情视频中文字幕 | 久久一级片 | 免费视频成人 | 久久久亚洲麻豆日韩精品一区三区 | 嫩草伊人久久精品少妇av | 国产精品成人av电影 | 久久精品99北条麻妃 | 日本中文一级片 | 91黄色成人 | 天堂成人在线 | 亚洲免费在线观看视频 | 欧美激情精品久久久 | 精品久久综合 | 国产高清在线 | 国产99久久久精品视频 | 国产在线综合视频 | 国产最新视频在线观看 | 91视频-88av | 在线视频婷婷 | 国产一级视频 | 91精品久久久久久久久 | 国产在线观看一 | 麻豆视频入口 | www夜夜操com | 久久与婷婷 | 中文字幕婷婷 | 欧日韩在线视频 | 日韩免费成人 | 国产精品久久久久久影院 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 99国产视频 | www.xxxx变态.com| 免费成人在线网站 | 久久人人爽人人爽人人片 | 日日操操操 | 天天综合久久综合 | 色婷婷www | 色香蕉在线视频 | 中文字幕中文字幕在线中文字幕三区 | 中文字幕久久精品 | 午夜资源站| 伊人亚洲综合网 | 欧美日韩中文字幕综合视频 | 人人爽人人爽人人片 | 亚洲激色 | 天天操天天色综合 | 高清一区二区三区av | 天天插夜夜操 | 99久久久久久久久久 | 久久视频在线 | 五月激情亚洲 | 一区二区三区精品在线视频 | 国产成人在线观看 | 亚洲第一伊人 | 亚洲婷婷在线视频 | 69国产精品视频 | 在线看黄色的网站 | 久久免费看 | 国产一区视频免费在线观看 | 看片黄网站 | 99久久精品久久亚洲精品 | 中文字幕在线第一页 | av免费观看网站 | 色综合天天射 | 久久久黄视频 | 久久免费视屏 | 草久草久| 色天天| 97超碰国产精品女人人人爽 | 国产午夜在线观看 | 中文字幕高清在线 | 日韩免费一区二区三区 | 免费av网站在线看 | a黄在线观看 | 91精品小视频 | 在线观看91 | 99综合视频 | 看全黄大色黄大片 | 超碰人在线 | 婷婷av综合 | 色婷婷激情综合 | 天天操比 | 中文字幕免费在线看 | 日韩字幕 | 欧美日韩三级在线观看 | av高清一区二区三区 | 精品久久久久久亚洲综合网站 | 午夜婷婷网 | 日韩av播放在线 | 午夜久久久影院 | 91社区国产高清 | 免费看片黄色 | 亚洲国产成人高清精品 | 伊人五月在线 | 精品高清视频 | 日韩av二区 | 国产一区二区不卡在线 | 日韩久久精品一区二区 | 国产三级国产精品国产专区50 | 一级a毛片高清视频 | 婷婷在线播放 | 国产一区在线免费观看视频 | 久久婷婷影视 | 亚洲最大的av网站 | 亚洲视频久久久久 | 免费观看福利视频 | 国产亚洲在线观看 | 国产精久久久 | 国产日韩一区在线 | 99精品视频在线观看免费 | 亚洲乱亚洲乱亚洲 | 综合色站 | 一级做a爱片性色毛片www | www.天天色.com| 欧美片一区二区三区 | 日本久久影视 | 国产精品手机在线 | 91在线看黄 | 中文字幕之中文字幕 | 91禁看片| 国产中文欧美日韩在线 | 伊人国产视频 | 欧美综合在线观看 | 91av中文字幕| 国产美女视频免费观看的网站 | 日韩视频一区二区三区在线播放免费观看 | 午夜av在线播放 | 久久人人精品 | 国产va精品免费观看 | 五月天亚洲精品 | 国产精品麻豆视频 | 精品影院一区二区久久久 | 免费av大片 | 黄色的视频 | 欧美一区二区三区在线播放 | 中文字幕 在线看 | 一区二区三区四区五区在线 | 97超碰在线久草超碰在线观看 | 91成人免费观看视频 | 日韩免费成人 | 久99久在线 | 狠狠色噜噜狠狠狠狠2021天天 | 韩国三级一区 | 激情网站免费观看 | 三级av免费| 天堂av在线网站 | 天堂v中文 | 天天干干| 亚洲国产免费网站 | 日韩欧美视频在线 | 91亚洲国产成人久久精品网站 | 久久影视网 | 正在播放一区二区 | 国产理伦在线 | 国产一区二区精品91 | 美女精品久久 | 日韩免费电影在线观看 | 欧美狠狠色| 亚洲美女在线一区 | 一区二区三区 中文字幕 | 国产成人精品日本亚洲999 | 久久婷婷精品视频 | 免费看国产曰批40分钟 | 欧美极品久久 | 欧美色图亚洲图片 | 免费日韩av电影 | 日韩欧美国产精品 | 麻豆视频免费在线观看 | 精品国产乱码久久久久 | 国产亚洲精品成人av久久影院 | 久草在线在线精品观看 | 国产在线久草 | 久色婷婷 | 亚洲欧美日韩精品久久久 | 一区 在线 影院 | 天天综合色天天综合 | 三级视频片 | 日本夜夜草视频网站 | 日日日日日 | 久久香蕉国产精品麻豆粉嫩av | 欧美日韩在线免费观看 | 国产高清视频在线观看 | 超碰午夜 | 国产99久久久国产精品 | 欧美一级性生活片 | 手机在线欧美 | 日日干天天爽 | 中文字幕在线观看国产 | av中文字幕亚洲 | 免费看的黄网站软件 | 国产三级精品三级在线观看 | 麻豆视频免费网站 |