本發(fā)明涉及一種即時通訊技術(shù),尤其涉及即時通訊中針對圖片的傳輸方法和裝置。
背景技術(shù):
即時通訊(im)服務(wù)是一種可以讓使用者在網(wǎng)絡(luò)上建立某種私人聊天室的實時通訊服務(wù)。最開始的即時通訊服務(wù)只能發(fā)送文本消息,后來逐步發(fā)展成可以通過傳送圖片、音視頻等多種方式與好友進(jìn)行交流的服務(wù)。目前,即時通訊服務(wù)已經(jīng)在互聯(lián)網(wǎng)上得到了廣泛的應(yīng)用和認(rèn)可。用戶通過即時通訊工具,能夠?qū)崿F(xiàn)即時對話,增進(jìn)了用戶與好友之間的互動,增強了交流趣味性。
當(dāng)前,應(yīng)用于諸如手機(jī)、平板電腦等移動端的即時通訊應(yīng)用程序的使用變得越來越普遍。由于移動終端設(shè)備和網(wǎng)絡(luò)的特殊性,在移動終端上的及時通訊服務(wù)的圖片管理,存在下列問題。
首先,由于移動端設(shè)備內(nèi)存有限,用戶在預(yù)覽選取圖片時如果不進(jìn)行相關(guān)處理,會產(chǎn)生加載速度慢,用戶體驗差的情況,甚至出現(xiàn)程序崩潰。
其次,圖片數(shù)據(jù)量較大與網(wǎng)絡(luò)帶寬的矛盾,可能造成收發(fā)時延過長或收發(fā)失敗。由于移動端的通信網(wǎng)絡(luò)可能是傳輸速率較低的網(wǎng)絡(luò),如2.5g,在傳輸數(shù)據(jù)量較大的場合下往往速度較慢,體驗不好。例如,在聊天過程中傳送圖片消息時,由于傳送的圖片尺寸過大,導(dǎo)致圖片傳輸時間過長,影響了即時通訊的實時性,使用戶的即時通訊體驗變得不。雖然隨著wi-fi覆蓋率增多,3g以及4g網(wǎng)絡(luò)的普及,網(wǎng)絡(luò)傳輸速率有了大幅度的增長,但是人們在社交場合中對于圖片的使用率越來越高,圖片的分辨率也越來越高,諸如720p,1080p,2k,4k等圖片,數(shù)據(jù)量的增加更快,矛盾依然存在。
另外在諸如新聞傳輸?shù)惹闆r下,需要對顯示新聞圖片進(jìn)行相應(yīng)剪裁,以達(dá)到比例良好的顯示效果。
技術(shù)實現(xiàn)要素:
以下給出一個或多個方面的簡要概述以提供對這些方面的基本理解。此概述不是所有構(gòu)想到的方面的詳盡綜覽,并且既非旨在指認(rèn)出所有方面的關(guān)鍵性或決定性要素亦非試圖界定任何或所有方面的范圍。其唯一的目的是要以簡化形式給出一個或多個方面的一些概念以為稍后給出的更加詳細(xì)的描述之序。
本發(fā)明的目的在于解決上述問題,提供了一種即時通訊中的圖片傳輸方法和裝置,能提高通訊中對圖片的加載速度,提升用戶體驗,避免程序崩潰,并能適應(yīng)傳輸速率較低的網(wǎng)絡(luò)。
本發(fā)明的技術(shù)方案為:本發(fā)明揭示了一種即時通訊中的圖片傳輸方法,用于第一移動終端和第二移動終端在即時通訊中的圖片傳輸,方法包括:
第一移動終端將用戶選取的圖片作為待發(fā)送圖片;
第一移動終端基于待發(fā)送圖片生成縮略圖,并將待發(fā)送圖片及其縮略圖一起上傳到文件服務(wù)器,在獲取到待發(fā)送圖片及其縮略圖在文件服務(wù)器上的url后,第一移動終端生成報文消息并發(fā)送到消息服務(wù)器;
第二移動終端收到報文消息后,根據(jù)url下載圖片及其縮略圖,并完成緩存;
第二移動終端根據(jù)緩存的結(jié)果進(jìn)行圖片顯示。
根據(jù)本發(fā)明的即時通訊中的圖片傳輸方法的一實施例,若用戶選取的圖片為原始圖,則使用無損壓縮得到待發(fā)送圖片,將無損壓縮圖及其縮略圖上傳到文件服務(wù)器。
根據(jù)本發(fā)明的即時通訊中的圖片傳輸方法的一實施例,若用戶不選擇原始圖發(fā)送,則根據(jù)第一移動終端的顯示屏幕尺寸和圖片尺寸的差值確定壓縮比例,基于該壓縮比例使用有損壓縮得到待發(fā)送圖片,將有損壓縮圖及其縮略圖上傳到文件服務(wù)器。
根據(jù)本發(fā)明的即時通訊中的圖片傳輸方法的一實施例,第二移動終端優(yōu)先下載縮略圖,并在用戶點擊查看的操作下,再下載原圖。
根據(jù)本發(fā)明的即時通訊中的圖片傳輸方法的一實施例,第二移動終端基于以最大程度保證圖片顯示用戶最需要部分的原則對圖片進(jìn)行剪裁,該原則包括以人臉為中心進(jìn)行剪裁。
本發(fā)明還揭示了一種即時通訊中的圖片傳輸系統(tǒng),包括第一移動終端、第二移動終端、文件服務(wù)器和消息服務(wù)器,其中:
第一移動終端包括圖片選取模塊,縮略圖生成模塊、圖片上傳模塊、報文消息發(fā)送模塊,其中圖片選取模塊用于將用戶選取的圖片作為待發(fā)送圖片,縮略圖生成模塊將待發(fā)送圖片生成縮略圖,圖片上傳模塊將待發(fā)送圖片及其縮略圖一起上傳到文件服務(wù)器,報文消息發(fā)送模塊在獲取到待發(fā)送圖片及其縮略圖在文件服務(wù)器上的url后,生成報文消息并發(fā)送到消息服務(wù)器;
文件服務(wù)器用于存儲來自于第一移動終端上傳的待發(fā)送圖片及其縮略圖;
消息服務(wù)器用于在第一移動終端和第二移動終端之間轉(zhuǎn)發(fā)報文消息;
第二移動終端包括報文消息接收模塊、圖片下載模塊、圖片顯示模塊,其中報文消息接收模塊接收消息服務(wù)器轉(zhuǎn)發(fā)的報文消息,圖片下載模塊在接收到報文消息后根據(jù)url下載圖片及其縮略圖并完成緩存,圖片顯示模塊根據(jù)緩存的結(jié)果進(jìn)行圖片顯示。
根據(jù)本發(fā)明的即時通訊中的圖片傳輸系統(tǒng)的一實施例,圖片選取模塊中,若用戶選取的圖片為原始圖,則使用無損壓縮得到待發(fā)送圖片,將無損壓縮圖及其縮略圖上傳到文件服務(wù)器。
根據(jù)本發(fā)明的即時通訊中的圖片傳輸系統(tǒng)的一實施例,圖片選取模塊中,若用戶不選擇原始圖發(fā)送,則根據(jù)第一移動終端的顯示屏幕尺寸和圖片尺寸的差值確定壓縮比例,基于該壓縮比例使用有損壓縮得到待發(fā)送圖片,將有損壓縮圖及其縮略圖上傳到文件服務(wù)器。
根據(jù)本發(fā)明的即時通訊中的圖片傳輸系統(tǒng)的一實施例,第二移動終端的圖片下載優(yōu)先下載縮略圖,并在用戶點擊查看的操作下,再下載原圖。
根據(jù)本發(fā)明的即時通訊中的圖片傳輸系統(tǒng)的一實施例,第二移動終端包括圖片剪裁模塊,基于以最大程度保證圖片顯示用戶最需要部分的原則對圖片進(jìn)行剪裁,該原則包括以人臉為中心進(jìn)行剪裁。
本發(fā)明對比現(xiàn)有技術(shù)有如下的有益效果:本發(fā)明基于待發(fā)送圖片生成縮略圖,將待發(fā)送圖片及其縮略圖一起上傳到文件服務(wù)器,在獲取到圖片在文件服務(wù)器上的url后,生成報文消息并發(fā)送給消息服務(wù)器,接收端在收到報文消息后,根據(jù)url下載圖片及其縮略圖,完成緩存,并根據(jù)緩存結(jié)果進(jìn)行圖片顯示。相較于現(xiàn)有技術(shù),本發(fā)明能提高通訊中對圖片的加載速度,提升用戶體驗,避免程序崩潰,并能適應(yīng)傳輸速率較低的網(wǎng)絡(luò)。
附圖說明
圖1示出了本發(fā)明的即時通訊中的圖片傳輸方法的較佳實施例的流程圖。
圖2示出了本發(fā)明的圖片預(yù)覽的細(xì)化流程示意圖。
圖3示出了本發(fā)明的圖片傳輸發(fā)送的細(xì)化流程示意圖。
圖4示出了本發(fā)明的圖片緩存的細(xì)化流程示意圖。
圖5示出了本發(fā)明的圖片裁剪的細(xì)化流程示意圖。
圖6示出了本發(fā)明的即時通訊中的圖片傳輸裝置的較佳實施例的原理圖。
具體實施方式
在結(jié)合以下附圖閱讀本公開的實施例的詳細(xì)描述之后,能夠更好地理解本發(fā)明的上述特征和優(yōu)點。在附圖中,各組件不一定是按比例繪制,并且具有類似的相關(guān)特性或特征的組件可能具有相同或相近的附圖標(biāo)記。
即時通訊中的圖片傳輸方法的實施例
圖1示出了本發(fā)明的即時通訊中的圖片傳輸方法的較佳實施例的流程。請參見圖1,下面是對本實施例的圖片傳輸方法的各個步驟的詳細(xì)描述。
步驟s1:第一移動終端將用戶選取的圖片作為待發(fā)送圖片。
用戶通過拍照或者手機(jī)相冊選取圖片并進(jìn)行預(yù)覽。用戶可以選取原始圖作為待發(fā)送圖片,也可以選取原始圖經(jīng)過壓縮后的圖片作為待發(fā)送圖片。
步驟s2:第一移動終端基于待發(fā)送圖片生成縮略圖。
若用戶選取的是原始圖,則使用無損壓縮得到待發(fā)送圖片,然后基于無損壓縮的待發(fā)送圖片生成縮略圖。
若用戶選取的是需要壓縮的圖片,則根據(jù)第一移動終端的顯示屏幕尺寸和圖片尺寸的差值確定壓縮比例,基于這一壓縮比例使用有損壓縮的方式得到待發(fā)送圖片,然后基于有損壓縮的待發(fā)送圖片生成縮略圖。
在用戶選取圖片時,本實施例提供對圖片的預(yù)覽功能。進(jìn)一步如圖2所示,首先獲取所要顯示的終端的顯示區(qū)域的尺寸、以及所要顯示的圖片尺寸,根據(jù)圖片的長度和高度和終端顯示區(qū)域的大小進(jìn)行對比,經(jīng)過對比后選取其中差值最小的情況來確定最終顯示圖片的大小。如果是手機(jī)拍照的圖片,可能會出現(xiàn)旋轉(zhuǎn)的情況,這就需要先判斷是否發(fā)生了旋轉(zhuǎn),若發(fā)生了旋轉(zhuǎn)則根據(jù)角度判斷重新旋轉(zhuǎn)為正常情況。最后根據(jù)上述確定的尺寸對原始圖片進(jìn)行壓縮,經(jīng)過壓縮后顯示到終端,這樣就保證最大限度的減少對圖片的清晰度的影響和盡量保證不失真。
步驟s3:第一移動終端將待發(fā)送圖片及其縮略圖一起上傳到文件服務(wù)器。
若用戶選取的是原始圖,則將無損壓縮的原始圖及其縮略圖上傳到文件服務(wù)器;若用戶選取的不是原始圖,則將有損壓縮的圖片及其縮略圖上傳到文件服務(wù)器。在上傳成功后,文件服務(wù)器返回對應(yīng)的url。
步驟s4:第一移動終端在獲取到待發(fā)送圖片及其縮略圖在文件服務(wù)器上的url后,生成報文消息并發(fā)送到消息服務(wù)器。
上述步驟s3的文件傳輸和本步驟s4的消息傳輸?shù)牧鞒踢M(jìn)一步如圖3所示。
步驟s5:第二移動終端收到報文消息后,根據(jù)url下載圖片及其縮略圖,并完成緩存。
第二移動終端優(yōu)先下載縮略圖。只有在用戶點擊進(jìn)一步查看圖片的操作下,再下載原圖片。
步驟s6:第二移動終端根據(jù)緩存的結(jié)果進(jìn)行圖片顯示。
對于步驟s5和s6的第二移動終端的細(xì)化處理如圖4所示。首先判斷所要顯示的圖片是否在終端中有緩存,如果沒有任何緩存,則需要進(jìn)行圖片下載并緩存到磁盤,經(jīng)過圖片解碼和圖片處理后,緩存到移動終端的內(nèi)存中,再經(jīng)過圖片處理將突破顯示到移動終端的界面中。
如果有內(nèi)存緩存,則需要從內(nèi)存中讀取緩存,再經(jīng)過圖片處理,最后將圖片顯示到移動終端的界面中。
較佳的,在第二移動終端(即接收端)上顯示圖片時,可以基于以最大程度保證圖片顯示用戶最需要部分的原則對圖片進(jìn)行剪裁。例如,以人臉為中心進(jìn)行剪裁。進(jìn)一步如圖5所示,根據(jù)圖片顯示需求判斷,如果沒有任何需求,則默認(rèn)在終端界面顯示圖片的縮略圖。如果有對圖片進(jìn)行剪裁的需求,則開始對圖片進(jìn)行分析,經(jīng)過圖片的人臉判斷,如果判斷出有人臉,則對此人臉坐標(biāo)進(jìn)行定位,根據(jù)用戶或設(shè)計中指定的顯示大小,從人臉中心分別向四周進(jìn)行剪裁,獲得所需要的圖片;如果沒有人臉,則默認(rèn)從圖片中心向四周進(jìn)行剪裁,完成后顯示在第二移動終端的界面上。
即時通訊中的圖片傳輸裝置的實施例
圖6示出了本發(fā)明的即時通訊中的圖片傳輸裝置的較佳實施例的原理。請參見圖6,本實施例的圖片傳輸裝置包括第一移動終端1、第二移動終端2、文件服務(wù)器3和消息服務(wù)器4。
第一移動終端1中包括圖片選取模塊11、縮略圖生成模塊12、圖片上傳模塊13、報文消息發(fā)送模塊14。
第二移動終端2中包括報文消息接收模塊21、圖片下載模塊22、圖片顯示模塊23。
圖片選取模塊11將用戶選取的圖片作為待發(fā)送圖片。用戶通過拍照或者手機(jī)相冊選取圖片并進(jìn)行預(yù)覽。用戶可以選取原始圖作為待發(fā)送圖片,也可以選取原始圖經(jīng)過壓縮后的圖片作為待發(fā)送圖片。
縮略圖生成模塊12將待發(fā)送圖片生成縮略圖。若用戶選取的是原始圖,則使用無損壓縮得到待發(fā)送圖片,然后基于無損壓縮的待發(fā)送圖片生成縮略圖。
若用戶選取的是需要壓縮的圖片,則根據(jù)第一移動終端的顯示屏幕尺寸和圖片尺寸的差值確定壓縮比例,基于這一壓縮比例使用有損壓縮的方式得到待發(fā)送圖片,然后基于有損壓縮的待發(fā)送圖片生成縮略圖。
在用戶選取圖片時,本實施例提供對圖片的預(yù)覽功能。進(jìn)一步如圖2所示,首先獲取所要顯示的終端的顯示區(qū)域的尺寸、以及所要顯示的圖片尺寸,根據(jù)圖片的長度和高度和終端顯示區(qū)域的大小進(jìn)行對比,經(jīng)過對比后選取其中差值最小的情況來確定最終顯示圖片的大小。如果是手機(jī)拍照的圖片,可能會出現(xiàn)旋轉(zhuǎn)的情況,這就需要先判斷是否發(fā)生了旋轉(zhuǎn),若發(fā)生了旋轉(zhuǎn)則根據(jù)角度判斷重新旋轉(zhuǎn)為正常情況。最后根據(jù)上述確定的尺寸對原始圖片進(jìn)行壓縮,經(jīng)過壓縮后顯示到終端,這樣就保證最大限度的減少對圖片的清晰度的影響和盡量保證不失真。
圖片上傳模塊13將待發(fā)送圖片及其縮略圖一起上傳到文件服務(wù)器3。若用戶選取的是原始圖,則將無損壓縮的原始圖及其縮略圖上傳到文件服務(wù)器;若用戶選取的不是原始圖,則將有損壓縮的圖片及其縮略圖上傳到文件服務(wù)器。在上傳成功后,文件服務(wù)器返回對應(yīng)的url。
報文消息發(fā)送模塊14在獲取到待發(fā)送圖片及其縮略圖在文件服務(wù)器3上的url后,生成報文消息并發(fā)送到消息服務(wù)器4。
文件服務(wù)器3存儲來自于第一移動終端1上傳的待發(fā)送圖片及其縮略圖。
消息服務(wù)器4在第一移動終端1和第二移動終端2之間轉(zhuǎn)發(fā)報文消息。
報文消息接收模塊21接收消息服務(wù)器4轉(zhuǎn)發(fā)的報文消息。圖片下載模塊22在接收到報文消息后根據(jù)url下載圖片及其縮略圖并完成緩存。第二移動終端21優(yōu)先下載縮略圖。只有在用戶點擊進(jìn)一步查看圖片的操作下,再下載原圖片。
圖片顯示模塊23根據(jù)緩存的結(jié)果進(jìn)行圖片顯示。首先判斷所要顯示的圖片是否在終端中有緩存,如果沒有任何緩存,則需要進(jìn)行圖片下載并緩存到磁盤,經(jīng)過圖片解碼和圖片處理后,緩存到移動終端的內(nèi)存中,再經(jīng)過圖片處理將突破顯示到移動終端的界面中。如果有內(nèi)存緩存,則需要從內(nèi)存中讀取緩存,再經(jīng)過圖片處理,最后將圖片顯示到移動終端的界面中。
較佳的,第二移動終端2包括圖片剪裁模塊24。圖片剪裁模塊24基于以最大程度保證圖片顯示用戶最需要部分的原則對圖片進(jìn)行剪裁,例如以人臉為中心進(jìn)行剪裁。進(jìn)一步如圖5所示,根據(jù)圖片顯示需求判斷,如果沒有任何需求,則默認(rèn)在終端界面顯示圖片的縮略圖。如果有對圖片進(jìn)行剪裁的需求,則開始對圖片進(jìn)行分析,經(jīng)過圖片的人臉判斷,如果判斷出有人臉,則對此人臉坐標(biāo)進(jìn)行定位,根據(jù)用戶或設(shè)計中指定的顯示大小,從人臉中心分別向四周進(jìn)行剪裁,獲得 所需要的圖片;如果沒有人臉,則默認(rèn)從圖片中心向四周進(jìn)行剪裁,完成后顯示在第二移動終端2的界面上。
盡管為使解釋簡單化將上述方法圖示并描述為一系列動作,但是應(yīng)理解并領(lǐng)會,這些方法不受動作的次序所限,因為根據(jù)一個或多個實施例,一些動作可按不同次序發(fā)生和/或與來自本文中圖示和描述或本文中未圖示和描述但本領(lǐng)域技術(shù)人員可以理解的其他動作并發(fā)地發(fā)生。
本領(lǐng)域技術(shù)人員將進(jìn)一步領(lǐng)會,結(jié)合本文中所公開的實施例來描述的各種解說性邏輯板塊、模塊、電路、和算法步驟可實現(xiàn)為電子硬件、計算機(jī)軟件、或這兩者的組合。為清楚地解說硬件與軟件的這一可互換性,各種解說性組件、框、模塊、電路、和步驟在上面是以其功能性的形式作一般化描述的。此類功能性是被實現(xiàn)為硬件還是軟件取決于具體應(yīng)用和施加于整體系統(tǒng)的設(shè)計約束。技術(shù)人員對于每種特定應(yīng)用可用不同的方式來實現(xiàn)所描述的功能性,但這樣的實現(xiàn)決策不應(yīng)被解讀成導(dǎo)致脫離了本發(fā)明的范圍。
結(jié)合本文所公開的實施例描述的各種解說性邏輯板塊、模塊、和電路可用通用處理器、數(shù)字信號處理器(dsp)、專用集成電路(asic)、現(xiàn)場可編程門陣列(fpga)或其它可編程邏輯器件、分立的門或晶體管邏輯、分立的硬件組件、或其設(shè)計成執(zhí)行本文所描述功能的任何組合來實現(xiàn)或執(zhí)行。通用處理器可以是微處理器,但在替換方案中,該處理器可以是任何常規(guī)的處理器、控制器、微控制器、或狀態(tài)機(jī)。處理器還可以被實現(xiàn)為計算設(shè)備的組合,例如dsp與微處理器的組合、多個微處理器、與dsp核心協(xié)作的一個或多個微處理器、或任何其他此類配置。
結(jié)合本文中公開的實施例描述的方法或算法的步驟可直接在硬件中、在由處理器執(zhí)行的軟件模塊中、或在這兩者的組合中體現(xiàn)。軟件模塊可駐留在ram存儲器、閃存、rom存儲器、eprom存儲器、eeprom存儲器、寄存器、硬盤、可移動盤、cd-rom、或本領(lǐng)域中所知的任何其他形式的存儲介質(zhì)中。示例性存儲介質(zhì)耦合到處理器以使得該處理器能從/向該存儲介質(zhì)讀取和寫入信息。在替換方案中,存儲介質(zhì)可以被整合到處理器。處理器和存儲介質(zhì)可駐留在asic中。asic可駐留在用戶終端中。在替換方案中,處理器和存儲介質(zhì)可作為分立組件駐留在用戶終端中。
在一個或多個示例性實施例中,所描述的功能可在硬件、軟件、固件或其任何組合中實現(xiàn)。如果在軟件中實現(xiàn)為計算機(jī)程序產(chǎn)品,則各功能可以作為一條或更多條指令或代碼存儲在計算機(jī)可讀介質(zhì)上或藉其進(jìn)行傳送。計算機(jī)可讀介質(zhì)包括計算機(jī)存儲介質(zhì)和通信介質(zhì)兩者,其包括促成計算機(jī)程序從一地向另一地轉(zhuǎn)移的任何介質(zhì)。存儲介質(zhì)可以是能被計算機(jī)訪問的任何可用介質(zhì)。作為示例而非限定,這樣的計算機(jī)可讀介質(zhì)可包括ram、rom、eeprom、cd-rom或其它光盤存儲、磁盤存儲或其它磁存儲設(shè)備、或能被用來攜帶或存儲指令或數(shù)據(jù)結(jié)構(gòu)形式的合意程序代碼且能被計算機(jī)訪問的任何其它介質(zhì)。任何連接也被正當(dāng)?shù)胤Q為計算機(jī)可讀介質(zhì)。例如,如果軟件是使用同軸電纜、光纖電纜、雙絞線、數(shù)字訂戶線(dsl)、或諸如紅外、無線電、以及微波之類的無線技術(shù)從web網(wǎng)站、服務(wù)器、或其它遠(yuǎn)程源傳送而來,則該同軸電纜、光纖電纜、雙絞線、dsl、或諸如紅外、無線電、以及微波之類的無線技術(shù)就被包括在介質(zhì)的定義之中。如本文中所使用的盤(disk)和碟(disc)包括壓縮碟(cd)、激光碟、光碟、數(shù)字多用碟(dvd)、軟盤和藍(lán)光碟,其中盤(disk)往往以磁的方式再現(xiàn)數(shù)據(jù),而碟(disc)用激光以光學(xué)方式再現(xiàn)數(shù)據(jù)。上述的組合也應(yīng)被包括在計算機(jī)可讀介質(zhì)的范圍內(nèi)。
提供對本公開的先前描述是為使得本領(lǐng)域任何技術(shù)人員皆能夠制作或使用本公開。對本公開的各種修改對本領(lǐng)域技術(shù)人員來說都將是顯而易見的,且本文中所定義的普適原理可被應(yīng)用到其他變體而不會脫離本公開的精神或范圍。由此,本公開并非旨在被限定于本文中所描述的示例和設(shè)計,而是應(yīng)被授予與本文中所公開的原理和新穎性特征相一致的最廣范圍。