如輸入設(shè)備(例如,鍵盤、鼠標、筆、語音輸入設(shè)備、觸摸輸入設(shè)備)或者其他外設(shè)(例如打印機、掃描儀等)之類的外部設(shè)備進行通信。示例的通信設(shè)備146可以包括網(wǎng)絡(luò)控制器160,其可以被布置為便于經(jīng)由一個或者多個通信端口 164與一個或者多個其他計算設(shè)備162通過網(wǎng)絡(luò)通信鏈路的通信。
[0027]網(wǎng)絡(luò)通信鏈路可以是通信介質(zhì)的一個示例。通信介質(zhì)通??梢泽w現(xiàn)為在諸如載波或者其他傳輸機制之類的調(diào)制數(shù)據(jù)信號中的計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊,并且可以包括任何信息遞送介質(zhì)?!罢{(diào)制數(shù)據(jù)信號”可以這樣的信號,它的數(shù)據(jù)集中的一個或者多個或者它的改變可以在信號中編碼信息的方式進行。作為非限制性的示例,通信介質(zhì)可以包括諸如有線網(wǎng)絡(luò)或者專線網(wǎng)絡(luò)之類的有線介質(zhì),以及諸如聲音、射頻(RF)、微波、紅外(IR)或者其它無線介質(zhì)在內(nèi)的各種無線介質(zhì)。這里使用的術(shù)語計算機可讀介質(zhì)可以包括存儲介質(zhì)和通信介質(zhì)二者。
[0028]計算設(shè)備100可以實現(xiàn)為小尺寸便攜(或者移動)電子設(shè)備的一部分,這些電子設(shè)備可以是諸如蜂窩電話、個人數(shù)字助理(PDA)、個人媒體播放器設(shè)備、無線網(wǎng)絡(luò)瀏覽設(shè)備、個人頭戴設(shè)備、應(yīng)用專用設(shè)備、或者可以包括上面任何功能的混合設(shè)備。計算設(shè)備100還可以實現(xiàn)為包括桌面計算機和筆記本計算機配置的個人計算機。
[0029]圖2示出了根據(jù)本發(fā)明一個實施例的圖片上傳裝置200的示意圖,圖片上傳裝置200駐留在計算設(shè)備中,具體而言,是駐留在計算設(shè)備的瀏覽器中,例如,圖片上傳裝置200為瀏覽器的一個插件。
[0030]如圖2所示,根據(jù)本發(fā)明的實施例的圖片上傳裝置200包括:圖片選擇單元210、圖片分配單元220、圖片處理單元230和信息配置單元240。
[0031]隨著企業(yè)用戶規(guī)模的不斷增加,上傳圖片的需求也越來越強烈。用戶可以在計算設(shè)備的瀏覽器中選擇多張第一格式圖片,例如,第一圖片的圖片格式為jpg、bmp和png等,上傳到圖片選擇單元210。圖片選擇單元210根據(jù)獲取的多個第一格式的圖片,為每個圖片生成一個上傳任務(wù)。其中,每一個上傳任務(wù)中都包括有上傳圖片的圖片信息(例如圖片格式信息、圖片的尺寸等)、圖片地址(圖片在計算設(shè)備中的存儲目錄)。
[0032]圖片上傳單元210將生成的上傳任務(wù)寫入到消息隊列中。消息隊列是在消息的傳輸過程中保存消息的容器,消息被發(fā)送到隊列中,隊列的主要目的是提供路由并保證消息的傳遞,如果發(fā)送消息時接收者不可用,消息隊列會保留消息,直到可以成功地傳遞它。
[0033]圖片處理單元230創(chuàng)建一個線程池,線程池中包括多個線程,用于根據(jù)接收到的信息配置單元240中的圖片處理信息處理接收到的圖片上傳任務(wù),圖片處理單元可以為Flash組件。線程池是一種多線程處理形式,處理過程中將任務(wù)添加到隊列,然后在創(chuàng)建線程后自動啟動這些任務(wù)。線程池中的線程都是后臺線程。每個線程都使用默認的堆棧大小,以默認的優(yōu)先級運行,并處于多線程單元中。如果某個線程在托管代碼中空閑(如正在等待某個事件),則線程池將插入另一個輔助線程來使所有處理器保持繁忙。如果所有線程池線程都始終保持繁忙,但隊列中包含掛起的工作,則線程池將在一段時間后創(chuàng)建另一個輔助線程但線程的數(shù)目永遠不會超過最大值。超過最大值的線程可以排隊,但他們要等到其他線程完成后才啟動。
[0034]圖片分配單元220從消息隊列順序取出圖片上傳任務(wù),將取出的圖片上傳任務(wù)分配給圖片處理單元230中空閑的線程,每一個圖片上傳任務(wù)都對應(yīng)一個線程。
[0035]根據(jù)一種實施方式,圖片上傳裝置還包括信息配置單元240,用于為圖片處理單元230配置圖片處理信息,圖片處理信息包括圖片尺寸的壓縮規(guī)格、服務(wù)器的地址和線程池中線程的數(shù)目。其中,圖片尺寸的壓縮規(guī)格用于將圖片壓縮到預定尺寸,例如,1920X9999。線程池中線程的數(shù)目用于限定線程的個數(shù),提高處理效率,例如,5個線程。
[0036]圖片處理單元230中的線程根據(jù)接收到的圖片任務(wù)和圖片處理信息中的圖片尺寸壓縮規(guī)格,將第一格式圖片壓縮到預定尺寸,將壓縮后的第一格式圖片進行編碼和轉(zhuǎn)碼,生成第二格式圖片。圖片處理單元230根據(jù)根據(jù)圖片處理信息中的服務(wù)器地址,將生成的第二格式圖片上傳到服務(wù)器。其中,生成的第二格式圖片一般為統(tǒng)一格式的圖片,例如,png格式。也就是說,不論第一格式圖片為jpg、bmp或png,都統(tǒng)一轉(zhuǎn)換為png格式。
[0037]圖片上傳服務(wù)器成功后,服務(wù)器會生成上傳成功結(jié)果,所述上傳圖片任務(wù)的線程會轉(zhuǎn)換到空閑狀態(tài)。同時,服務(wù)器回調(diào)上傳成功結(jié)果給圖片處理單元230,圖片處理單元230根據(jù)服務(wù)器回調(diào)的上傳成功結(jié)果,得到該線程為空閑狀態(tài),于是從消息隊列中分配新的圖片上傳任務(wù)給該線程,直到所有圖片完成上傳。
[0038]圖3示出了根據(jù)本發(fā)明一個實施例中多線程并發(fā)上傳圖片的示意圖;
[0039]根據(jù)一個實施例并參考圖3,用戶在上傳圖片的時候,可以通過計算設(shè)備中瀏覽器實現(xiàn)。用戶通過瀏覽器選擇多張任意格式的圖片,例如,圖片格式為jpg、bmp和png。選擇的每一張圖片會生成一個上傳任務(wù),將生成的上傳任務(wù)寫入消息隊列中。Flash組件從消息隊列中獲取上傳任務(wù),分發(fā)給Flash組件中各線程。每一個線程根據(jù)接到的上傳任務(wù),根據(jù)圖片處理信息中的圖片尺寸的壓縮規(guī)格,將圖片壓縮到預定尺寸,并對壓縮后的圖片進行編碼、轉(zhuǎn)碼處理,生成統(tǒng)一的png格式圖片。并根據(jù)圖片處理信息中的服務(wù)器地址,將生成的png格式圖片上傳到服務(wù)器。上傳成功后,所述線程空閑,服務(wù)器會生成上傳成功結(jié)果,服務(wù)器將上傳成功結(jié)果返回給線程池,線程池分發(fā)新的圖片上傳任務(wù)給空閑的線程,直到所有圖片上傳完成。
[0040]根據(jù)本發(fā)明的技術(shù)方案,通過消息隊列和線程池,實現(xiàn)圖片并發(fā)上傳,通過壓縮圖片尺寸,提高圖片上傳速度。另外,通過編碼和轉(zhuǎn)碼將不同格式的圖片生成統(tǒng)一格式的圖片,提高傳輸性能。
[0041]圖4示出了根據(jù)本發(fā)明一個實施例的圖片上傳方法400的流程圖。如圖4所示,該方法在計算設(shè)備的瀏覽器中執(zhí)行,該方法適于步驟S410。
[0042]在步驟S410中,獲取用戶選擇的多個第一格式圖片,并為每個第一格式圖片生成上傳任務(wù)。其中,第一格式圖片的格式可以為jpg、bmp和png等。
[0043]根據(jù)一種實施方式,為所述第一格式圖片配置圖片處理信息,圖片處理信息包括圖片尺寸壓縮規(guī)格、服務(wù)器地址和線程池中的線程數(shù)目。
[0044]隨后,在步驟S420中,將生成的上傳任務(wù)寫入消息隊列。
[0045]隨后,在步驟S430中,創(chuàng)建一個線程池,所述線程池中包括多個線程。
[0046]隨后,在步驟S440中,線程池從消息隊列中取出上傳任務(wù),并將取出的上傳任務(wù)分配給空閑的線程,其中每一個上傳任務(wù)對應(yīng)一個線程。
[0047]隨后,在步驟S450中,每個線程根據(jù)分配的上傳任務(wù),將第一格式圖片進行編碼和轉(zhuǎn)碼,生成第二格式圖片。
[0048]根據(jù)一種實施方式,線程對第一格式圖片尺寸進行壓縮,根據(jù)圖片處理信息中的圖片尺寸壓縮規(guī)格,將第一格式圖片壓縮到預定尺寸,將壓縮后的第一格式圖片進行編碼和轉(zhuǎn)碼,生成第二格式圖片。
[0049]在步驟S460中,將步驟S450中生成的第二格式圖片上傳到服務(wù)器。根據(jù)一種實施方式,根據(jù)圖片處理信息中的服務(wù)器地址,將生成的第二格式圖片上傳到服務(wù)器。
[0050]根據(jù)本發(fā)明的技術(shù)方案,通過消息隊列和線程池,實現(xiàn)圖片并發(fā)上傳,通過壓縮圖片尺寸,提高圖片上