一種圖片實(shí)時(shí)切圖裝置及方法
【專利摘要】本發(fā)明公開(kāi)了一種圖片實(shí)時(shí)切圖裝置及方法,包括:網(wǎng)絡(luò)服務(wù)器,適于接收請(qǐng)求方調(diào)取圖片的縮略圖的請(qǐng)求,以及根據(jù)該請(qǐng)求將所需縮略圖傳送給請(qǐng)求方;分布式實(shí)時(shí)處理模塊,適于根據(jù)網(wǎng)絡(luò)服務(wù)器傳送的調(diào)取圖片的縮略圖的請(qǐng)求,對(duì)圖片進(jìn)行處理并生成所需縮略圖,返回給網(wǎng)絡(luò)服務(wù)器;其中所述請(qǐng)求中包含所述圖片的信息以及所需縮略圖的信息。本發(fā)明不適用圖片存儲(chǔ)服務(wù)器集群,圖片處理服務(wù)器集群對(duì)圖片進(jìn)行處理之后并不進(jìn)行存儲(chǔ),直接發(fā)給網(wǎng)絡(luò)服務(wù)器并在網(wǎng)絡(luò)服務(wù)器處進(jìn)行緩存,從而減少了機(jī)器的消耗;本發(fā)明由于有需要才會(huì)生成縮略圖,解決了預(yù)生成、縮略圖尺寸不可隨意改變、浪費(fèi)存儲(chǔ)空間與服務(wù)CPU資源的問(wèn)題;整個(gè)處理流程更短,邏輯上更為簡(jiǎn)單。
【專利說(shuō)明】一種圖片實(shí)時(shí)切圖裝置及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)圖片處理技術(shù),具體涉及一種圖片實(shí)時(shí)切圖裝置及方法。
【背景技術(shù)】
[0002]隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的快速發(fā)展,越來(lái)越多的圖片需要在網(wǎng)絡(luò)上在線預(yù)覽?,F(xiàn)有技術(shù)中,在用戶將圖片上傳后,不管該圖片的縮略圖是否會(huì)被瀏覽,在服務(wù)器上都會(huì)預(yù)生成所需尺寸的該圖片的縮略圖。在這種情況下,存在著許多問(wèn)題:第一,由于用戶可能不看或者只看部份尺寸的縮略圖,但無(wú)論在任何情況下,服務(wù)端都會(huì)根據(jù)應(yīng)用需要,生成所需尺寸的縮略圖進(jìn)行存儲(chǔ),因而浪費(fèi)了許多存儲(chǔ)空間。第二,由于圖片縮略圖裁剪是一個(gè)CPU密集型的應(yīng)用,在有些應(yīng)用場(chǎng)景,用戶不會(huì)查看所有生成的縮略圖,從而造成了網(wǎng)絡(luò)服務(wù)器CPU資源的嚴(yán)重浪費(fèi),在高負(fù)載的情況下,也影響了用戶的正常體驗(yàn),造成縮略圖不能及時(shí)生成。第三,由于圖片資源是預(yù)生成的,當(dāng)需要增加新尺寸的縮略圖時(shí),會(huì)導(dǎo)致新加尺寸的縮略圖短時(shí)間內(nèi)無(wú)法生成,實(shí)時(shí)性較差,嚴(yán)重影響用戶體驗(yàn)。
[0003]基于以上諸多原因,用戶對(duì)圖片的實(shí)時(shí)切圖需求越來(lái)越大。
【發(fā)明內(nèi)容】
[0004]鑒于上述問(wèn)題,提出了本發(fā)明以便提供一種克服上述問(wèn)題或者至少部分地解決上述問(wèn)題的圖片實(shí)時(shí)切圖裝置及方法。
[0005]依據(jù)本發(fā)明的一個(gè)方面,提供了一種圖片實(shí)時(shí)切圖裝置,其包括:網(wǎng)絡(luò)服務(wù)器和分布式實(shí)時(shí)處理模塊,所述網(wǎng)絡(luò)服務(wù)器適于接收請(qǐng)求方調(diào)取圖片的縮略圖的請(qǐng)求并將其傳送給所述分布式實(shí)時(shí)處理模塊,以及根據(jù)所述請(qǐng)求將所需縮略圖傳送給請(qǐng)求方;所述分布式實(shí)時(shí)處理模塊適于根據(jù)所述網(wǎng)絡(luò)服務(wù)器傳送的調(diào)取圖片的縮略圖的請(qǐng)求,對(duì)圖片進(jìn)行處理并生成所需縮略圖,返回給所述網(wǎng)絡(luò)服務(wù)器;其中所述請(qǐng)求中包含所述圖片的信息以及所需縮略圖的信息。
[0006]可選地,在本發(fā)明的上述裝置中,所述網(wǎng)絡(luò)服務(wù)器包括:接收單元,其接收請(qǐng)求方調(diào)取圖片的縮略圖的請(qǐng)求;緩存單元,其緩存圖片的縮略圖;檢測(cè)單元,其檢測(cè)緩存單元中是否存儲(chǔ)有所需縮略圖;發(fā)送單元,其將所需縮略圖傳送給請(qǐng)求方;其中,當(dāng)檢測(cè)單元檢測(cè)到緩存單元中存儲(chǔ)有所需縮略圖時(shí),發(fā)送單元將該所需縮略圖發(fā)送給請(qǐng)求方;當(dāng)檢測(cè)單元在緩存單元中未檢測(cè)到所需縮略圖時(shí),接收單元將所接收的請(qǐng)求方的調(diào)取圖片的縮略圖的請(qǐng)求傳送給所述分布式實(shí)時(shí)處理模塊。
[0007]可選地,在本發(fā)明的上述裝置中,所述緩存單元將所需縮略圖緩存一預(yù)定時(shí)間,當(dāng)該縮略圖緩存超過(guò)該預(yù)定時(shí)間,則該縮略圖被從所述緩存單元中刪除。
[0008]可選地,在本發(fā)明的上述裝置中,所述分布式實(shí)時(shí)處理模塊包括:任務(wù)調(diào)度中心單元,其接收網(wǎng)絡(luò)服務(wù)器傳送來(lái)的請(qǐng)求方的調(diào)取圖片的縮略圖的請(qǐng)求,并將該請(qǐng)求寫(xiě)入消息隊(duì)列中;圖片處理服務(wù)器集群?jiǎn)卧?,其包括多個(gè)圖片處理服務(wù)器,所述多個(gè)圖片處理服務(wù)器中的一個(gè)圖片處理服務(wù)器從所述任務(wù)調(diào)度中心單元的消息隊(duì)列中拉取消息,根據(jù)所拉取的消息,對(duì)圖片進(jìn)行處理并生成所需縮略圖,并將該縮略圖返回給所述任務(wù)調(diào)度中心。
[0009]依據(jù)本發(fā)明的一個(gè)方面,提供了一種圖片實(shí)時(shí)切圖方法,其包括:接收調(diào)取圖片的縮略圖的請(qǐng)求,所述請(qǐng)求包含該圖片的信息以及所需縮略圖的信息;根據(jù)該請(qǐng)求檢測(cè)是否緩存有所需縮略圖;如果緩存有所需縮略圖,則將緩存的所需縮略圖傳送給請(qǐng)求方;否則將該請(qǐng)求傳送給圖片處理服務(wù)器集群中的一個(gè)圖片處理服務(wù)器,由該圖片處理服務(wù)器根據(jù)該請(qǐng)求對(duì)該圖片進(jìn)行處理并生成所需縮略圖,將由圖片處理服務(wù)器生成的所需縮略圖傳送給請(qǐng)求方。
[0010]可選地,在本發(fā)明的上述方法中,所述將該請(qǐng)求傳送給圖片處理服務(wù)器集群中的一個(gè)圖片處理服務(wù)器步驟包括:將該請(qǐng)求寫(xiě)入任務(wù)調(diào)度的消息隊(duì)列中;圖片處理服務(wù)器集群中的一個(gè)圖片處理器從所述任務(wù)調(diào)度的消息隊(duì)列中拉取消息。
[0011]可選地,在本發(fā)明的上述方法中,在所述將由圖片處理服務(wù)器生成的所需縮略圖傳送給請(qǐng)求方的步驟之前還包括:緩存所生成的所需縮略圖。
[0012]可選地,在本發(fā)明的上述方法中,所述緩存所生成的所需縮略圖的步驟包括:緩存所生成的所需縮略圖預(yù)定時(shí)間;以及判斷該所需縮略圖緩存是否超過(guò)該預(yù)定時(shí)間,如果是,則刪除該縮略圖。
[0013]本發(fā)明的圖片實(shí)時(shí)切圖裝置及其方法在有請(qǐng)求時(shí)才會(huì)生成縮略圖,節(jié)省了存儲(chǔ)空間以及CPU資源,而且可以根據(jù)用戶的請(qǐng)求而獲得所需尺寸的縮略圖,整個(gè)處理流程更短,邏輯上更為簡(jiǎn)單。另外,本發(fā)明不采用圖片存儲(chǔ)服務(wù)器集群,圖片處理服務(wù)器集群對(duì)圖片進(jìn)行處理之后并不進(jìn)行存儲(chǔ),直接發(fā)給網(wǎng)絡(luò)服務(wù)器并在網(wǎng)絡(luò)服務(wù)器處進(jìn)行緩存,從而減少了機(jī)器的消耗。因此,本發(fā)明具有充分利用存儲(chǔ)空間、充分利用CPU資源、及時(shí)生成縮略圖和實(shí)時(shí)性好的特點(diǎn)。
[0014]上述說(shuō)明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說(shuō)明書(shū)的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的【具體實(shí)施方式】。
【專利附圖】
【附圖說(shuō)明】
[0015]通過(guò)閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
[0016]圖1示出了現(xiàn)有技術(shù)中的一種對(duì)圖片的縮略圖進(jìn)行處理的方式;
[0017]圖2和圖3示出了現(xiàn)有技術(shù)中的另一種對(duì)圖片的縮略圖進(jìn)行處理的方式;
[0018]圖4示出了根據(jù)本發(fā)明的實(shí)施方式的一種圖片實(shí)時(shí)切圖裝置的結(jié)構(gòu)示意圖;
[0019]圖5示出了根據(jù)本發(fā)明的實(shí)施方式的一種圖片實(shí)時(shí)切圖方法的流程圖;
[0020]圖6示出了緩存有所需縮略圖的情況下本發(fā)明的圖片實(shí)時(shí)切圖方法的一個(gè)實(shí)施例的流程示意圖;
[0021]圖7示出了沒(méi)有緩存的所需縮略圖的情況下本發(fā)明的圖片實(shí)時(shí)切圖方法的一個(gè)實(shí)施例的流程示意圖;
[0022]圖8示出了本發(fā)明的一個(gè)在沒(méi)有緩存的所需縮略圖的情況下生成所需縮略圖的處理流程的例子?!揪唧w實(shí)施方式】
[0023]下面將參照附圖更詳細(xì)地描述本公開(kāi)的示例性實(shí)施例。雖然附圖中顯示了本公開(kāi)的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開(kāi)而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開(kāi),并且能夠?qū)⒈竟_(kāi)的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0024]圖1示出了現(xiàn)有技術(shù)中的一種圖片在線預(yù)覽的實(shí)現(xiàn)方式,其采用網(wǎng)絡(luò)服務(wù)器和超文本預(yù)處理語(yǔ)言PHP (Hypertext Preprocessor)以及PHP處理圖形的擴(kuò)展庫(kù)即⑶庫(kù)、或者網(wǎng)絡(luò)服務(wù)器和PHP以及圖像處理軟件imagemagick以異步的方式對(duì)上傳至網(wǎng)絡(luò)服務(wù)器的圖片進(jìn)行處理,以得到相應(yīng)的圖片的縮略圖。如圖1所示,對(duì)于已經(jīng)上傳至網(wǎng)絡(luò)服務(wù)器的圖片,當(dāng)用戶想要瀏覽該圖片的縮略圖時(shí),瀏覽器會(huì)發(fā)出通過(guò)圖片縮略圖地址(通常為HTTP的形式)而拉取圖片縮略圖的請(qǐng)求,網(wǎng)絡(luò)服務(wù)器根據(jù)該請(qǐng)求判斷是否存儲(chǔ)有該圖片的縮略圖,如果沒(méi)有,則對(duì)該圖片進(jìn)行處理以將一默認(rèn)圖片返回給瀏覽器;如果網(wǎng)絡(luò)服務(wù)器中存儲(chǔ)有該圖片的縮略圖,則直接將該圖片的縮略圖返回給瀏覽器。這種圖片縮略圖的切圖處理方式在大并發(fā)高訪問(wèn)的情況下,由于服務(wù)端對(duì)圖片進(jìn)行縮略圖處理的工作量過(guò)多而處理不過(guò)來(lái),導(dǎo)致負(fù)載急速上升,最終雪崩,系統(tǒng)無(wú)法響應(yīng)。另外,由于即使圖片的縮略圖不被瀏覽,其也被生成,并預(yù)先存儲(chǔ)于網(wǎng)絡(luò)服務(wù)器中,而圖片處理是一個(gè)CPU密集型的應(yīng)用,因此浪費(fèi)了 CPU資源,也浪費(fèi)了存儲(chǔ)空間。
[0025]圖2和圖3示出了現(xiàn)有技術(shù)中的另一種圖片在線預(yù)覽的實(shí)現(xiàn)方式,其采用網(wǎng)絡(luò)服務(wù)器和PHP以及PHP處理圖形的擴(kuò)展庫(kù)即GD庫(kù)、或者網(wǎng)絡(luò)服務(wù)器和PHP以及圖像處理軟件imagemagick以異步的方式對(duì)圖片進(jìn)行處理,以得到相應(yīng)的圖片的縮略圖。
[0026]對(duì)于上傳至網(wǎng)絡(luò)服務(wù)器的圖片,當(dāng)用戶想要瀏覽該圖片的縮略圖時(shí),瀏覽器會(huì)發(fā)出通過(guò)圖片縮略圖地址而拉取圖片縮略圖的請(qǐng)求,網(wǎng)絡(luò)服務(wù)器根據(jù)該請(qǐng)求判斷是否存儲(chǔ)有該圖片的縮略圖,當(dāng)網(wǎng)絡(luò)服務(wù)器中已經(jīng)存在該圖片的縮略圖時(shí),網(wǎng)絡(luò)服務(wù)器會(huì)將該圖片的縮略圖返回給發(fā)出請(qǐng)求的瀏覽器,如圖2所示;當(dāng)網(wǎng)絡(luò)服務(wù)器中沒(méi)有緩存有圖片的縮略圖時(shí)(即該圖片的縮略圖未被請(qǐng)求過(guò),所以未緩存于網(wǎng)絡(luò)服務(wù)器中),網(wǎng)絡(luò)服務(wù)器根據(jù)瀏覽器的請(qǐng)求為該圖片創(chuàng)建縮略圖,例如網(wǎng)絡(luò)服務(wù)器發(fā)送創(chuàng)建圖片縮略圖的消息或指令給cg1-server (CGI服務(wù)器),利用cgi_server(其可以存在于網(wǎng)絡(luò)服務(wù)器中也可以獨(dú)立于網(wǎng)絡(luò)服務(wù)器)獲取圖片的縮略圖,并將該縮略圖存儲(chǔ)在圖片存儲(chǔ)服務(wù)器中。如果在瀏覽器請(qǐng)求該圖片的縮略圖時(shí)該圖片已經(jīng)被處理并將其縮略圖存儲(chǔ)于圖片存儲(chǔ)服務(wù)器的話,如圖3所示,網(wǎng)絡(luò)服務(wù)器根據(jù)瀏覽器的請(qǐng)求從圖片存儲(chǔ)服務(wù)器中獲取該圖片的縮略圖并緩存于本地,再將該圖片的縮略圖返回給瀏覽器,顯示給用戶。而當(dāng)從圖片存儲(chǔ)服務(wù)器未獲取圖片縮略圖時(shí),圖片存儲(chǔ)服務(wù)器會(huì)返回消息告知圖片縮略圖不存在,而由cg1-server根據(jù)瀏覽器側(cè)的請(qǐng)求創(chuàng)建一個(gè)圖片縮略圖并存儲(chǔ)于圖片存儲(chǔ)服務(wù)器中,這樣下次瀏覽器再次請(qǐng)求時(shí)就可以獲得圖片縮略圖。這種異步的處理方式由于在瀏覽器側(cè)請(qǐng)求拉取圖片縮略圖之前已經(jīng)生成了圖片縮略圖并存儲(chǔ),所以同樣存在浪費(fèi)存儲(chǔ)空間和浪費(fèi)CPU資源的缺陷,另外,當(dāng)所需的縮略圖的尺寸或者裁剪規(guī)則變更時(shí),調(diào)用時(shí)將會(huì)無(wú)法獲取到縮略圖,因此還存在實(shí)時(shí)性較差的缺陷。
[0027]下面結(jié)合圖4和圖5對(duì)本發(fā)明實(shí)施例進(jìn)行詳細(xì)描述。[0028]圖4示出了根據(jù)本發(fā)明的一種實(shí)施方式的圖片實(shí)時(shí)切圖裝置400的結(jié)構(gòu)圖。圖片實(shí)時(shí)切圖裝置400包括網(wǎng)絡(luò)服務(wù)器420和分布式實(shí)時(shí)處理模塊430。
[0029]網(wǎng)絡(luò)服務(wù)器420適于接收請(qǐng)求方調(diào)取圖片的縮略圖的請(qǐng)求并將其傳送給分布式實(shí)時(shí)處理模塊430,以及根據(jù)該請(qǐng)求將所需縮略圖傳送給請(qǐng)求方,其中所述請(qǐng)求包含所述圖片的信息以及所需縮略圖的信息。所述圖片的信息包括圖片的地址、圖片的哈希值等能夠找到該圖片的信息;所需縮略圖的信息包括所需縮略圖的尺寸、格式(例如JPG、GIF等格式)等。這里,網(wǎng)絡(luò)服務(wù)器420可以由HTTP和反向代理服務(wù)器來(lái)實(shí)現(xiàn),例如由Nginx來(lái)實(shí)現(xiàn)。Nginx(" engine χ")是一個(gè)高性能的HTTP和反向代理服務(wù)器,也是一個(gè)IMAP /POP3 / SMTP代理服務(wù)器。
[0030]分布式實(shí)時(shí)處理模塊430根據(jù)網(wǎng)絡(luò)服務(wù)器420傳送的調(diào)取圖片的縮略圖的請(qǐng)求,對(duì)圖片進(jìn)行處理并生成所需縮略圖,返回給網(wǎng)絡(luò)服務(wù)器420。這里,分布式實(shí)時(shí)處理模塊430例如可以采用GraphicsMagick對(duì)圖片進(jìn)行處理,根據(jù)所述請(qǐng)求中包含的所需縮略圖的尺寸等信息,裁剪所述圖片而得到所需縮略圖。其中GraphicsMagick是一個(gè)開(kāi)源的圖片處理軟件。
[0031]如上所述,本發(fā)明的圖片實(shí)時(shí)切圖裝置400通過(guò)使用網(wǎng)絡(luò)服務(wù)器、分布式實(shí)時(shí)處理模塊430的分布式實(shí)時(shí)處理方式以及GraphicsMagick可以實(shí)現(xiàn)對(duì)圖片進(jìn)行縮略圖的實(shí)時(shí)裁剪。具體的實(shí)現(xiàn)過(guò)程如下:
[0032]當(dāng)客戶端410請(qǐng)求調(diào)取圖片的縮略圖時(shí),其會(huì)發(fā)送請(qǐng)求給網(wǎng)絡(luò)服務(wù)器420,在該請(qǐng)求中包含要請(qǐng)求的圖片的信息以及需要的縮略圖的尺寸等信息。網(wǎng)絡(luò)服務(wù)器420接收到來(lái)自客戶端410的請(qǐng)求,會(huì)將該請(qǐng)求傳送給分布式實(shí)時(shí)處理模塊430。分布式實(shí)時(shí)處理模塊430根據(jù)所收到的請(qǐng)求,對(duì)圖片進(jìn)行處理并生成所需縮略圖,返回給網(wǎng)絡(luò)服務(wù)器420。網(wǎng)絡(luò)服務(wù)器420根據(jù)客戶端410的請(qǐng)求將所需縮略圖傳送給客戶端410。
[0033]進(jìn)一步地,網(wǎng)絡(luò)服務(wù)器420可以包括接收單元421、檢測(cè)單元422、緩存單元423、和發(fā)送單元424。
[0034]其中,接收單元421接收請(qǐng)求方調(diào)取圖片的縮略圖的請(qǐng)求,例如,其接收來(lái)自客戶端410調(diào)取圖片的縮略圖的請(qǐng)求。
[0035]緩存單元423適于緩存圖片的所需縮略圖,例如其可以由緩存器等具有存儲(chǔ)功能的部件來(lái)實(shí)現(xiàn)。緩存單元423將所得到的圖片的縮略圖緩存起來(lái),下次用戶請(qǐng)求該圖片的縮略圖時(shí),如果該縮略圖符合用戶的要求,則可以直接從緩存單元423中調(diào)取。可選地,緩存單元423將所需縮略圖緩存一預(yù)定時(shí)間,當(dāng)該縮略圖緩存超過(guò)該預(yù)定時(shí)間,則該縮略圖被從緩存單元423中刪除,因?yàn)槿绻摽s略圖長(zhǎng)時(shí)間不被使用,則說(shuō)明此圖片的使用率不高,因此可以將其刪除以避免占用緩存空間,另外,通常會(huì)有大量的縮略圖被緩存,為了及時(shí)地釋放緩存空間,也需要定期對(duì)緩存單元423進(jìn)行處理。
[0036]檢測(cè)單元422適于檢測(cè)緩存單元423中是否存儲(chǔ)有所需縮略圖。當(dāng)檢測(cè)單元422檢測(cè)到緩存單元423中存儲(chǔ)有所需縮略圖時(shí),發(fā)送單元424將該所需縮略圖發(fā)送給請(qǐng)求方(例如客戶端410)。當(dāng)檢測(cè)單元422在緩存單元423中未檢測(cè)到所需縮略圖時(shí),接收單元421將所接收的請(qǐng)求方的調(diào)取圖片的縮略圖的請(qǐng)求傳送給所述分布式實(shí)時(shí)處理模塊430。
[0037]分布式實(shí)時(shí)處理模塊430可以包括任務(wù)調(diào)度中心單元431和圖片處理服務(wù)器集群?jiǎn)卧?32。任務(wù)調(diào)度中心單元431接收網(wǎng)絡(luò)服務(wù)器420傳送來(lái)的請(qǐng)求方的調(diào)取圖片的縮略圖的請(qǐng)求,將該請(qǐng)求寫(xiě)入消息隊(duì)列中。圖片處理服務(wù)器集群?jiǎn)卧?32包括多個(gè)圖片處理服務(wù)器。所述多個(gè)圖片處理服務(wù)器中的一個(gè)圖片處理服務(wù)器從任務(wù)調(diào)度中心單元431的消息隊(duì)列中拉取消息,根據(jù)所拉取的消息,對(duì)圖片進(jìn)行處理并生成所需縮略圖,然后將該縮略圖以消息的形式返回給任務(wù)調(diào)度中心431。任務(wù)調(diào)度中心431將該縮略圖返回給網(wǎng)絡(luò)服務(wù)器420,網(wǎng)絡(luò)服務(wù)器420再將其返回給客戶端410。這里,從任務(wù)調(diào)度中心單元431的消息隊(duì)列中拉取消息的圖片處理服務(wù)器是空閑的圖片處理服務(wù)器,當(dāng)有多個(gè)空閑的圖片處理服務(wù)器從任務(wù)調(diào)度中心單元431的消息隊(duì)列中拉取消息時(shí),由先拉取的圖片處理服務(wù)器獲得消肩、O
[0038]圖5示出了根據(jù)本發(fā)明的實(shí)施方式的一種圖片實(shí)時(shí)切圖方法的流程圖。如圖5所示,本發(fā)明的圖片實(shí)時(shí)切圖方法500始于步驟510,在步驟510,接收調(diào)取圖片的縮略圖的請(qǐng)求,所述請(qǐng)求包含該圖片的信息以及所需縮略圖的信息。該步驟主要由網(wǎng)絡(luò)服務(wù)器來(lái)執(zhí)行,該網(wǎng)絡(luò)服務(wù)器例如可以由Nginx來(lái)實(shí)現(xiàn)。在圖片被上傳至網(wǎng)絡(luò)服務(wù)器之后,用戶在瀏覽器側(cè)瀏覽該圖片的縮略圖時(shí),會(huì)通過(guò)瀏覽器發(fā)送拉取圖片的縮略圖的請(qǐng)求給網(wǎng)絡(luò)服務(wù)器。
[0039]接下來(lái),在步驟520,根據(jù)上述請(qǐng)求檢測(cè)是否緩存有所需縮略圖。如果圖片的縮略圖曾經(jīng)被請(qǐng)求過(guò),則網(wǎng)絡(luò)服務(wù)器有可能會(huì)緩存有該圖片的縮略圖,由于緩存的圖片縮略圖通常只被緩存一預(yù)定時(shí)間,所以,即使曾經(jīng)生成過(guò)該圖片的縮略圖,也有可能因?yàn)闀r(shí)間過(guò)久而被刪除。網(wǎng)絡(luò)服務(wù)器進(jìn)行檢測(cè)時(shí),會(huì)根據(jù)所述請(qǐng)求中所包含的縮略圖的尺寸等的要求進(jìn)行檢測(cè),如果所要求的縮略圖的尺寸不同于所緩存的該圖片的縮略圖,那么所緩存的該圖片的縮略圖也不能被使用,檢測(cè)的結(jié)果將是不存在所需縮略圖。
[0040]如果檢測(cè)緩存有所需縮略圖,則進(jìn)入步驟530,將緩存的所需縮略圖傳送給請(qǐng)求方。如圖6所示,其示出了緩存有所需縮略圖的情況下本發(fā)明的圖片實(shí)時(shí)切圖方法的一個(gè)實(shí)施例的流程示意圖,其中檢測(cè)緩存有所需縮略圖且該緩存未過(guò)期,于是將緩存的圖片縮略圖返回至瀏覽器。
[0041]如果檢測(cè)的結(jié)果是沒(méi)有緩存的所需縮略圖,則進(jìn)入步驟540,將所述請(qǐng)求傳送給圖片處理服務(wù)器集群中的一個(gè)圖片處理服務(wù)器,由該圖片處理服務(wù)器根據(jù)所述請(qǐng)求對(duì)該圖片進(jìn)行處理,生成所需縮略圖。這里,圖片處理服務(wù)器集群包括多個(gè)圖片處理服務(wù)器,當(dāng)任何一個(gè)圖片處理服務(wù)器在其空閑時(shí)都可以去消息隊(duì)列中拉取消息,然后根據(jù)該消息中的所述請(qǐng)求對(duì)圖片進(jìn)行處理,當(dāng)存在多個(gè)圖片處理服務(wù)器同時(shí)去拉取消息時(shí),可分配給最先拉取的圖片處理服務(wù)器。接下來(lái),在步驟550,將由圖片處理服務(wù)器生成的所需縮略圖傳送給請(qǐng)求方。如圖7所示,其給出了沒(méi)有緩存的所需縮略圖的情況下本發(fā)明的圖片實(shí)時(shí)切圖方法的一個(gè)實(shí)施例的流程示意圖,其中網(wǎng)絡(luò)服務(wù)器檢測(cè)到?jīng)]有緩存的圖片縮略圖,于是發(fā)出調(diào)用圖片裁剪的請(qǐng)求給圖片處理服務(wù)器,圖片處理服務(wù)器根據(jù)該調(diào)用請(qǐng)求對(duì)該圖片進(jìn)行裁剪而得到所需縮略圖,并將該所需縮略圖返回給網(wǎng)絡(luò)服務(wù)器,網(wǎng)絡(luò)服務(wù)器將該所需縮略圖傳送給請(qǐng)求的瀏覽器。
[0042]另外,在沒(méi)有緩存的所需縮略圖的情況下,所述將該請(qǐng)求傳送給圖片處理服務(wù)器集群中的一個(gè)圖片處理服務(wù)器步驟可以包括如下步驟:將所述請(qǐng)求寫(xiě)入任務(wù)調(diào)度的消息隊(duì)列(例如可以存放于任務(wù)調(diào)度服務(wù)器)中,圖片處理服務(wù)器集群中的一個(gè)圖片處理器從所述任務(wù)調(diào)度的消息隊(duì)列中拉取消息。如圖8所示,其示出了根據(jù)本發(fā)明的實(shí)施例的在沒(méi)有緩存的所需縮略圖的情況下生成所需縮略圖的處理流程的一個(gè)例子。在圖8中,所述請(qǐng)求被寫(xiě)入在任務(wù)調(diào)度中心的消息隊(duì)列中,之后,圖片處理服務(wù)器集群中的一個(gè)圖片處理服務(wù)器從所述任務(wù)調(diào)度的消息隊(duì)列中拉取消息。然后,由該圖片處理服務(wù)器根據(jù)所拉取到的消息中包含的請(qǐng)求對(duì)該圖片進(jìn)行處理并生成所需縮略圖,之后將所生成的所需縮略圖例如以消息的形式返回給任務(wù)調(diào)度中心,由任務(wù)調(diào)度中心將所需縮略圖返回給調(diào)用方,即網(wǎng)絡(luò)服務(wù)器,網(wǎng)絡(luò)服務(wù)器再傳送給請(qǐng)求方,即請(qǐng)求圖片的縮略圖的瀏覽器。
[0043]另外,在所述將由圖片處理服務(wù)器生成的所需縮略圖傳送給請(qǐng)求方的步驟之前還可以包括步驟:緩存所生成的所需縮略圖??蛇x地,所生成的所需縮略圖可以被緩存預(yù)定時(shí)間,當(dāng)該縮略圖被緩存超過(guò)該預(yù)定時(shí)間時(shí),刪除該縮略圖。例如,可選地,該預(yù)定時(shí)間可以設(shè)定為該縮略圖第一次被調(diào)用的時(shí)間開(kāi)始的一預(yù)定時(shí)間??蛇x地,該預(yù)定時(shí)間可以設(shè)定為從該縮略圖最后一次被調(diào)用的時(shí)間開(kāi)始的一預(yù)定時(shí)間。本發(fā)明的方法通過(guò)上述步驟,可以將所生成的縮略圖緩存一預(yù)定時(shí)間,從而在該預(yù)定時(shí)間內(nèi),無(wú)需在圖片每次被調(diào)用時(shí)都生成該圖片的縮略圖。如果預(yù)定時(shí)間設(shè)定為從該縮略圖最后一次被調(diào)用的時(shí)間開(kāi)始的一預(yù)定時(shí)間,則在圖片被調(diào)用的次數(shù)頻繁時(shí),可以使該圖片的縮略圖在該圖片被頻繁調(diào)用期間及之后的預(yù)定時(shí)間內(nèi)無(wú)需再次生成。這樣,可以提高圖片被調(diào)用的效率,也可以減少圖片處理服務(wù)器的工作量。另外,如果該縮略圖長(zhǎng)時(shí)間不被使用,則說(shuō)明此圖片的使用率不高,因此可以將其刪除以避免占用緩存空間。另外,通常會(huì)有大量的縮略圖被緩存,為了及時(shí)地釋放緩存空間,也需要定期對(duì)被緩存的圖片進(jìn)行處理。
[0044]利用本發(fā)明的圖片實(shí)時(shí)切圖裝置及其方法,由于有需要時(shí)(即用戶想要瀏覽圖片的縮略圖時(shí))才會(huì)生成縮略圖,所以解決了現(xiàn)有技術(shù)中存在的浪費(fèi)存儲(chǔ)空間、浪費(fèi)CPU資源、和縮略圖尺寸不可隨意改變的問(wèn)題。而且,整個(gè)處理流程更短,邏輯上更為簡(jiǎn)單。另外,現(xiàn)有技術(shù)通常采用圖片存儲(chǔ)服務(wù)器集群存儲(chǔ)圖片,而本發(fā)明不采用圖片存儲(chǔ)服務(wù)器集群,而是采用圖片處理服務(wù)器集群對(duì)圖片進(jìn)行處理之后并不進(jìn)行存儲(chǔ),直接發(fā)給網(wǎng)絡(luò)服務(wù)器并在網(wǎng)絡(luò)服務(wù)器處進(jìn)行緩存,從而減少了機(jī)器的消耗,因此本發(fā)明具有充分利用存儲(chǔ)空間、充分利用CPU資源、及時(shí)生成縮略圖和實(shí)時(shí)性好的特點(diǎn)。
[0045]在此提供的算法和顯示不與任何特定計(jì)算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見(jiàn)的。此外,本發(fā)明也不針對(duì)任何特定編程語(yǔ)言。應(yīng)當(dāng)明白,可以利用各種編程語(yǔ)言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對(duì)特定語(yǔ)言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。
[0046]在此處所提供的說(shuō)明書(shū)中,說(shuō)明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒(méi)有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說(shuō)明書(shū)的理解。
[0047]類似地,應(yīng)當(dāng)理解,為了精簡(jiǎn)本公開(kāi)并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對(duì)本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開(kāi)的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說(shuō),如下面的權(quán)利要求書(shū)所反映的那樣,發(fā)明方面在于少于前面公開(kāi)的單個(gè)實(shí)施例的所有特征。因此,遵循【具體實(shí)施方式】的權(quán)利要求書(shū)由此明確地并入該【具體實(shí)施方式】,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。[0048]本領(lǐng)域那些技術(shù)人員可以理解,可以對(duì)實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們?cè)O(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中。可以把實(shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過(guò)程或者單元中的至少一些是相互排斥之外,可以采用任何組合對(duì)本說(shuō)明書(shū)(包括伴隨的權(quán)利要求、摘要和附圖)中公開(kāi)的所有特征以及如此公開(kāi)的任何方法或者設(shè)備的所有過(guò)程或單元進(jìn)行組合。除非另外明確陳述,本說(shuō)明書(shū)(包括伴隨的權(quán)利要求、摘要和附圖)中公開(kāi)的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來(lái)代替。
[0049]此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書(shū)中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來(lái)使用。
[0050]本發(fā)明的各個(gè)部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個(gè)或者多個(gè)處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號(hào)處理器(DSP)來(lái)實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的瀏覽器客戶端中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個(gè)或者多個(gè)信號(hào)的形式。這樣的信號(hào)可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號(hào)上提供,或者以任何其他形式提供。
[0051]應(yīng)該注意的是上述實(shí)施例對(duì)本發(fā)明進(jìn)行說(shuō)明而不是對(duì)本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號(hào)之間的任何參考符號(hào)構(gòu)造成對(duì)權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來(lái)實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過(guò)同一個(gè)硬件項(xiàng)來(lái)具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
【權(quán)利要求】
1.一種圖片實(shí)時(shí)切圖裝置,其包括:網(wǎng)絡(luò)服務(wù)器和分布式實(shí)時(shí)處理模塊, 所述網(wǎng)絡(luò)服務(wù)器適于接收請(qǐng)求方調(diào)取圖片的縮略圖的請(qǐng)求并將其傳送給所述分布式實(shí)時(shí)處理模塊,以及根據(jù)所述請(qǐng)求將所需縮略圖傳送給請(qǐng)求方; 所述分布式實(shí)時(shí)處理模塊適于根據(jù)所述網(wǎng)絡(luò)服務(wù)器傳送的調(diào)取圖片的縮略圖的請(qǐng)求,對(duì)圖片進(jìn)行處理并生成所需縮略圖,返回給所述網(wǎng)絡(luò)服務(wù)器; 其中所述請(qǐng)求中包含所述圖片的信息以及所需縮略圖的信息。
2.根據(jù)權(quán)利要求1所述的裝置,其中, 所述網(wǎng)絡(luò)服務(wù)器包括: 接收單元,其接收請(qǐng)求方調(diào)取圖片的縮略圖的請(qǐng)求; 緩存單元,其緩存圖片的縮略圖; 檢測(cè)單元,其檢測(cè)緩存單元中是否存儲(chǔ)有所需縮略圖; 發(fā)送單元,其將所需縮略圖傳送給請(qǐng)求方; 其中,當(dāng)檢測(cè)單元檢測(cè)到緩存單元中存儲(chǔ)有所需縮略圖時(shí),發(fā)送單元將該所需縮略圖發(fā)送給請(qǐng)求方;當(dāng)檢測(cè)單元在緩存單元中未檢測(cè)到所需縮略圖時(shí),接收單元將所接收的請(qǐng)求方的調(diào)取圖片的縮略圖的請(qǐng)求傳送給所述分布式實(shí)時(shí)處理模塊。
3.根據(jù)權(quán)利要求2所述的裝置,其中, 所述緩存單元將所需縮略圖緩存一預(yù)定時(shí)間,當(dāng)該縮略圖緩存超過(guò)該預(yù)定時(shí)間,則該縮略圖被從所述緩存單元中刪除。
4.根據(jù)權(quán)利要求1-3中任一項(xiàng)所述的裝置,其中, 所述分布式實(shí)時(shí)處理模塊包括: 任務(wù)調(diào)度中心單元,其接收網(wǎng)絡(luò)服務(wù)器傳送來(lái)的請(qǐng)求方的調(diào)取圖片的縮略圖的請(qǐng)求,并將該請(qǐng)求寫(xiě)入消息隊(duì)列中; 圖片處理服務(wù)器集群?jiǎn)卧?,其包括多個(gè)圖片處理服務(wù)器,所述多個(gè)圖片處理服務(wù)器中的一個(gè)圖片處理服務(wù)器從所述任務(wù)調(diào)度中心單元的消息隊(duì)列中拉取消息,根據(jù)所拉取的消息,對(duì)圖片進(jìn)行處理并生成所需縮略圖,并將該縮略圖返回給所述任務(wù)調(diào)度中心。
5.根據(jù)權(quán)利要求1-4中任一項(xiàng)所述的裝置,其中, 所述網(wǎng)絡(luò)服務(wù)器由HTTP和反向代理服務(wù)器來(lái)實(shí)現(xiàn)。
6.一種圖片實(shí)時(shí)切圖方法,其包括: 接收調(diào)取圖片的縮略圖的請(qǐng)求,所述請(qǐng)求包含該圖片的信息以及所需縮略圖的信息; 根據(jù)該請(qǐng)求檢測(cè)是否緩存有所需縮略圖; 如果緩存有所需縮略圖,則將緩存的所需縮略圖傳送給請(qǐng)求方;否則將該請(qǐng)求傳送給圖片處理服務(wù)器集群中的一個(gè)圖片處理服務(wù)器,由該圖片處理服務(wù)器根據(jù)該請(qǐng)求對(duì)該圖片進(jìn)行處理并生成所需縮略圖,將由圖片處理服務(wù)器生成的所需縮略圖傳送給請(qǐng)求方。
7.根據(jù)權(quán)利要求6所述的方法,其中,所述將該請(qǐng)求傳送給圖片處理服務(wù)器集群中的一個(gè)圖片處理服務(wù)器步驟包括: 將該請(qǐng)求寫(xiě)入任務(wù)調(diào)度的消息隊(duì)列中; 圖片處理服務(wù)器集群中的一個(gè)圖片處理器從所述任務(wù)調(diào)度的消息隊(duì)列中拉取消息。
8.根據(jù)權(quán)利要求6或7所述的方法,在所述將由圖片處理服務(wù)器生成的所需縮略圖傳送給請(qǐng)求方的步驟之前 還包括:緩存所生成的所需縮略圖。
9.根據(jù)權(quán)利要求8所述的方法,其中,所述緩存所生成的所需縮略圖的步驟包括:緩存所生成的所需縮略圖預(yù)定時(shí)間;以及判斷該所需縮略圖緩 存是否超過(guò)該預(yù)定時(shí)間,如果是,則刪除該縮略圖。
【文檔編號(hào)】G06F17/30GK103699566SQ201310534397
【公開(kāi)日】2014年4月2日 申請(qǐng)日期:2013年11月1日 優(yōu)先權(quán)日:2013年11月1日
【發(fā)明者】楊銀波, 陳超 申請(qǐng)人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司