国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      應用程序編譯流程的圖片處理方法及裝置與流程

      文檔序號:12596186閱讀:528來源:國知局
      應用程序編譯流程的圖片處理方法及裝置與流程

      本發(fā)明涉及移動終端技術領域,尤其涉及應用程序編譯流程的圖片處理方法及裝置。



      背景技術:

      隨著移動智能終端的快速發(fā)展,智能終端中應用軟件也越來越多,應用軟件的安裝通常需通過網(wǎng)絡下載相應的安裝包。但是隨著應用軟件的功能越來越多,安裝包也在不斷的升級,從而使得安裝包越來越大,進而導致傳輸過程中產(chǎn)生的流量加大,浪費網(wǎng)絡傳輸流量資源。

      在安卓操作系統(tǒng)中,安裝包為apk安裝包,在通過安卓編譯平臺對應應用程序編譯時,通常采用預置編譯處理工具對所述資源文件進行編譯,然而在預置編譯處理工具對圖片壓縮處理流程中通常采用安卓編譯平臺自帶的壓縮工具對圖片進行壓縮,由于安卓編譯平臺自帶的壓縮工具的壓縮效果較差,導致生成的apk安裝包較大。



      技術實現(xiàn)要素:

      本發(fā)明實施例的主要目的是提供一種應用程序編譯流程的圖片處理方法及裝置,旨在實現(xiàn)自定義壓縮工具對圖片壓縮,提高圖片壓縮的效果,減少安裝包的大小。

      為實現(xiàn)上述目的,本發(fā)明實施例提供了一種應用程序編譯流程的圖片處理方法,所述應用程序編譯流程的圖片處理方法包括以下步驟:

      接收到應用程序編譯請求時,根據(jù)所述應用程序編譯請求獲取對應資源文件中的圖片;

      提取所述圖片中為第一預置格式的第一圖片,并調(diào)用第一預置圖片壓縮工具壓縮所述第一圖片;調(diào)用預置編譯處理工具對所述資源文件進行編譯,提取所述圖片中為第二預置格式的第二圖片,并通過所述編譯處理工具對所 述第二圖片的格式特征數(shù)據(jù)提取后,壓縮所述第二圖片。

      進一步地,本發(fā)明實施例還提供了一種應用程序編譯流程的圖片處理裝置,所述應用程序編譯流程的圖片處理裝置包括:

      獲取模塊,用于接收到應用程序編譯請求時,根據(jù)所述應用程序編譯請求獲取對應資源文件中的圖片;

      處理模塊,用于提取所述圖片中為第一預置格式的第一圖片,并調(diào)用第一預置圖片壓縮工具壓縮所述第一圖片;調(diào)用預置編譯處理工具對所述資源文件進行編譯,提取所述圖片中為第二預置格式的第二圖片,并通過所述編譯處理工具對所述第二圖片的格式特征數(shù)據(jù)提取后,壓縮所述第二圖片。

      本發(fā)明實施例通過在接收到應用程序編譯請求時,根據(jù)所述應用程序編譯請求獲取對應資源文件中的圖片;提取所述圖片中為第一預置格式的第一圖片,并調(diào)用第一預置圖片壓縮工具壓縮所述第一圖片;調(diào)用預置編譯處理工具對所述資源文件進行編譯,提取所述圖片中為第二預置格式的第二圖片,并通過所述編譯處理工具對所述第二圖片的格式特征數(shù)據(jù)提取后,壓縮所述第二圖片。從而可以實現(xiàn)自定義壓縮工具對圖片壓縮,因此提高了圖片壓縮的效果,減少了安裝包的大小,進而減少傳輸過程中產(chǎn)生的流量,節(jié)省網(wǎng)絡傳輸流量資源。

      附圖說明

      圖1是本發(fā)明應用程序編譯流程的圖片處理裝置第一實施例的硬件架構示意圖;

      圖2是本發(fā)明應用程序編譯流程的圖片處理裝置第二實施例的功能模塊示意圖;

      圖3是本發(fā)明應用程序編譯流程的圖片處理裝置第三實施例的功能模塊示意圖;

      圖4是本發(fā)明應用程序編譯流程的圖片處理方法第一實施例的流程示意圖;

      圖5是本發(fā)明應用程序編譯流程的圖片處理方法第二實施例的流程示意 圖;

      圖6是本發(fā)明應用程序編譯流程的圖片處理方法第三實施例的流程示意圖;

      圖7是本發(fā)明應用程序編譯流程的圖片處理方法第四實施例的流程示意圖。

      本發(fā)明目的的實現(xiàn)、功能特點及優(yōu)點將結(jié)合實施例,參照附圖做進一步說明。

      具體實施方式

      以下結(jié)合說明書附圖及具體實施例進一步說明本發(fā)明的技術方案。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。

      參照圖1,提出本發(fā)明應用程序編譯流程的圖片處理裝置第一實施例。該實施例中,該應用程序編譯流程的圖片處理裝置第一實施例包括:處理器111、存儲器112、用戶接口113、網(wǎng)絡接口114及通信總線115。通信總線115用于數(shù)據(jù)服務器中各組成部件之間的通信,用戶接口113用于接收用戶輸入的信息,該用戶接口可以為有線接口及無線接口,例如鍵盤、鼠標等。網(wǎng)絡接口114用于數(shù)據(jù)服務器與外部進行互相通信,該網(wǎng)絡接口114也可以包括有線接口及無線接口。存儲器112可以包括一個或一個以上計算機可讀存儲介質(zhì),而且其不但包括內(nèi)部存儲器,還包括外部存儲器。該存儲器中存儲有操作系統(tǒng)及圖片處理應用程序等等。處理器111用于調(diào)用存儲器112中的圖片處理應用程序,以執(zhí)行以下操作:

      接收到應用程序編譯請求時,根據(jù)所述應用程序編譯請求獲取對應資源文件中的圖片;

      提取所述圖片中為第一預置格式的第一圖片,并調(diào)用第一預置圖片壓縮工具壓縮所述第一圖片;調(diào)用預置編譯處理工具對所述資源文件進行編譯,提取所述圖片中為第二預置格式的第二圖片,并通過所述編譯處理工具對所述第二圖片的格式特征數(shù)據(jù)提取后,壓縮所述第二圖片。

      進一步地,處理器111還用于調(diào)用存儲器112中的圖片處理應用程序,以執(zhí)行以下操作:

      調(diào)用預置的第二預置圖片壓縮工具壓縮所述第二圖片;或者,

      調(diào)用所述第一預置圖片壓縮工具壓縮所述第二圖片。

      進一步地,所述第一預置圖片壓縮工具為pngout工具,所述第二預置圖片壓縮工具為pngcrush程序。

      進一步地,所述第二圖片為九宮格圖片;所述第一圖片為非九宮格圖片。

      進一步地,處理器111還用于調(diào)用存儲器112中的圖片處理應用程序,以執(zhí)行以下操作:

      根據(jù)所述圖片的格式對所述圖片進行分類處理,以獲得第一預置格式的第一圖片和第二預置格式的第二圖片。

      本發(fā)明實施例通過在接收到應用程序編譯請求時,根據(jù)所述應用程序編譯請求獲取對應資源文件中的圖片;提取所述圖片中為第一預置格式的第一圖片,并調(diào)用第一預置圖片壓縮工具壓縮所述第一圖片;調(diào)用預置編譯處理工具對所述資源文件進行編譯,提取所述圖片中為第二預置格式的第二圖片,并通過所述編譯處理工具對所述第二圖片的格式特征數(shù)據(jù)提取后,壓縮所述第二圖片。從而可以實現(xiàn)自定義壓縮工具對圖片壓縮,因此提高了圖片壓縮的效果,減少了安裝包的大小,進而減少傳輸過程中產(chǎn)生的流量,節(jié)省網(wǎng)絡傳輸流量資源。

      進一步地,參照圖2,在本發(fā)明應用程序編譯流程的圖片處理裝置第二實施例中,該應用程序編譯流程的圖片處理裝置包括:

      獲取模塊10,用于接收到應用程序編譯請求時,根據(jù)所述應用程序編譯請求獲取對應資源文件中的圖片;

      處理模塊20,用于提取所述圖片中為第一預置格式的第一圖片,并調(diào)用第一預置圖片壓縮工具壓縮所述第一圖片;調(diào)用預置編譯處理工具對所述資源文件進行編譯,提取所述圖片中為第二預置格式的第二圖片,并通過所述編譯處理工具對所述第二圖片的格式特征數(shù)據(jù)提取后,壓縮所述第二圖片。

      本發(fā)明實施例提供的應用程序編譯流程的圖片處理裝置主要應用于安卓操作系統(tǒng)中,用于對應用程序編譯流程進行控制,以生成安裝包。本實施例中,該安裝包是指apk安裝包。

      上述應用程序編譯請求可以由開發(fā)人員主動輸入,開發(fā)人員在完成新的 應用程序開發(fā)工作后,需要對該應用程序進行編譯以生成相應的apk安裝包發(fā)布到網(wǎng)站上,以供用戶進行下載安裝。具體地,開發(fā)人員可通過Android編譯平臺提供的軟件操作界面輸入應用程序編譯請求,在Android編譯平臺接收到開發(fā)人員輸入的程序編譯請求后,將獲取該應用程序?qū)馁Y源文件下的所有的圖片。

      可以理解的是,在資源文件中所有的圖片包括各種格式的圖片,例如可以包括png的圖片、jpg的圖片和bmp的圖片等等。具體地,在png圖片中還包括“.9.png”為擴展名的九宮格圖片。上述第一圖片的第一預置格式和第二圖片的第二預置格式類型可以根據(jù)實際需要進行設置,本實施例中,優(yōu)選地,上述第二圖片的第二預置格式為“.9.png”圖片格式,第一圖片的第一預置格式為除“.9.png”圖片格式以外的所有圖片格式。即在本實施例中,所述第二圖片為九宮格圖片;所述第一圖片為非九宮格圖片。

      進一步地,上述第一預置圖片壓縮工具的類型也可以根據(jù)實際需要設置,本實施例中,為了降低壓縮后圖片的大小,優(yōu)選地,可以采用pngout工具,該pngout工具可以將常用圖像轉(zhuǎn)換為PNG格式并將其壓縮的工具,因此可以實現(xiàn)對上述第一預置格式的所有圖片進行壓縮。可以理解的是,為了提高壓縮效果,還可以針對不同格式的圖片采用不同的壓縮工具。

      上述預置編譯處理工具通常采用aapt(Android Asset Packaging Tool),通過aapt可以將資源文件編譯成二進制文件。其中對資源文件中的圖片處理過程通常是調(diào)用預置的圖片壓縮工具對圖片進行壓縮處理,該調(diào)用預置的圖片壓縮工具指Android編譯平臺自帶的圖片壓縮工具pngcrush程序,該pngcrush程序為aapt內(nèi)置的開源壓縮算法。

      具體地,在Android編譯平臺接收到開發(fā)人員輸入的程序編譯請求后,將首先獲取資源文件下的所有圖片,然后提取所述圖片中為第一預置格式的第一圖片,并調(diào)用上述pngout工具對該第一圖片進行壓縮工作;此外,通過aapt對資源文件進行編譯處理,當進入圖片壓縮流程時,首先提取圖片中為第二預置格式的第二圖片,并對該第二圖片的格式特征數(shù)據(jù)進行提取(在九宮格圖片中,為了保證圖片格式不變,部分像素數(shù)據(jù)塊是不能被壓縮的,該格式特征數(shù)據(jù)是指不能別壓縮的數(shù)據(jù)塊進行提取,具體地,可以參照現(xiàn)有技術中對九宮格圖片的壓縮);然后對該第二圖片進行壓縮,以保證第二圖片的格式 不變。

      應當說明的是,調(diào)用pngout工具對第一圖片壓縮的時間可以根據(jù)實際需要進行設置,在此不做進一步地限定。例如,可以在上述aapt對資源文件進行編譯前(如首先進行第一圖片的壓縮)、在aapt對資源文件進行編譯時(如同時進行第一圖片和第二圖片的壓縮)、也可以在aapt對資源文件進行編譯后(首先進行第二圖片的壓縮,然后進行第一圖片的壓縮)。具體地,本實施例中,可以采用多個進程同時執(zhí)行第一圖片的壓縮和aapt的編譯操作??梢岳斫獾氖?,由于上述pngout工具采取的壓縮方式為極限壓縮,因此對圖片壓縮的時間較長,本實施例中,優(yōu)選地,在接收到上述應用程序編譯請求時,即可開啟一進程執(zhí)行第一圖片的壓縮工作,當應用程序編譯流程執(zhí)行到需要通過aapt進行資源文件編譯處理時,可以同時開啟另一進程啟動aapt對資源文件編譯處理。

      本發(fā)明實施例通過在接收到應用程序編譯請求時,根據(jù)所述應用程序編譯請求獲取對應資源文件中的圖片;提取所述圖片中為第一預置格式的第一圖片,并調(diào)用第一預置圖片壓縮工具壓縮所述第一圖片;調(diào)用預置編譯處理工具對所述資源文件進行編譯,提取所述圖片中為第二預置格式的第二圖片,并通過所述編譯處理工具對所述第二圖片的格式特征數(shù)據(jù)提取后,壓縮所述第二圖片。從而可以實現(xiàn)自定義壓縮工具對圖片壓縮,因此提高了圖片壓縮的效果,減少了安裝包的大小,進而減少傳輸過程中產(chǎn)生的流量,節(jié)省網(wǎng)絡傳輸流量資源。

      應當說明的是,對上述第二圖片的壓縮方式可以根據(jù)實際需要進行設置,以下通過兩種不同的實時方式進行詳細說明。

      例如,在第一實時方式中:可以不改變原有aapt壓縮機制。具體地,在本發(fā)明應用程序編譯流程的圖片處理裝置第一實施方式中,所述處理模塊20具體用于調(diào)用預置的第二預置圖片壓縮工具壓縮所述第二圖片。該第二預置圖片壓縮工具為pngcrush程序,即在本實施方式中,可以通過直接調(diào)用編譯平臺自帶的pngcrush程序?qū)Φ诙D片進行壓縮。

      此外,為了提高壓縮效果,在第二實時方式中:還可以不采用編譯平臺自帶的pngcrush程序?qū)Φ诙D片進行壓縮。具體地,在本發(fā)明應用程序編譯 流程的圖片處理裝置第二實施方式中,上述處理模塊20具體用于調(diào)用上述第一預置圖片壓縮工具壓縮所述第二圖片。

      優(yōu)選地,處理模塊20對于第二圖片的壓縮可以采用本發(fā)明應用程序編譯流程的圖片處理裝置第二實施方式:調(diào)用上述第一預置圖片壓縮工具壓縮所述第二圖片。從而在對aapt編譯處理完成生成apk安裝包時,只需要通過接口函數(shù)獲取pngout工具壓縮的圖片即可。

      進一步地,參照圖3,基于本發(fā)明應用程序編譯流程的圖片處理裝置任一實施例,在本發(fā)明應用程序編譯流程的圖片處理裝置第三實施例中,上述應用程序編譯流程的圖片處理裝置還包括:

      分類模塊30,用于根據(jù)所述圖片的格式對所述圖片進行分類處理,以獲得第一預置格式的第一圖片和第二預置格式的第二圖片。

      本實施例中,在獲取到上述圖片后,可以根據(jù)圖片的擴展名對圖片進行分類處理,具體地,可以按照上述第一預置格式和第二預置格式對圖片進行分類,以得到九宮格圖片和非九宮格圖片,然后將九宮格圖片儲存到第一預置位置,將非九宮格圖片存儲到第二預置位置,在后續(xù)進行圖片壓縮時,可以直接在分別在第一預置位置和第二預置位置進行圖片讀取即可。由于在本實施例中,首先對圖片進行分類處理,因此無需在圖片壓縮時對每一張圖片進行格式判斷,從而有效提高了壓縮的速度。

      本發(fā)明提出了一種應用程序編譯流程的圖片處理方法。參照圖4,本發(fā)明應用程序編譯流程的圖片處理方法第一實施例中,該應用程序編譯流程的圖片處理方法包括以下步驟:

      步驟S10,接收到應用程序編譯請求時,根據(jù)所述應用程序編譯請求獲取對應資源文件中的圖片;

      步驟S20,提取所述圖片中為第一預置格式的第一圖片,并調(diào)用第一預置圖片壓縮工具壓縮所述第一圖片;調(diào)用預置編譯處理工具對所述資源文件進行編譯,提取所述圖片中為第二預置格式的第二圖片,并通過所述編譯處理工具對所述第二圖片的格式特征數(shù)據(jù)提取后,壓縮所述第二圖片。

      本發(fā)明實施例提供的應用程序編譯流程的圖片處理方法主要應用于安卓 操作系統(tǒng)中,用于對應用程序編譯流程進行控制,以生成安裝包。本實施例中,該安裝包是指apk安裝包。

      上述應用程序編譯請求可以由開發(fā)人員主動輸入,開發(fā)人員在完成新的應用程序開發(fā)工作后,需要對該應用程序進行編譯以生成相應的apk安裝包發(fā)布到網(wǎng)站上,以供用戶進行下載安裝。具體地,開發(fā)人員可通過Android編譯平臺提供的軟件操作界面輸入應用程序編譯請求,在Android編譯平臺接收到開發(fā)人員輸入的程序編譯請求后,將獲取該應用程序?qū)馁Y源文件下的所有的圖片。

      可以理解的是,在資源文件中所有的圖片包括各種格式的圖片,例如可以包括png的圖片、jpg的圖片和bmp的圖片等等。具體地,在png圖片中還包括“.9.png”為擴展名的九宮格圖片。上述第一圖片的第一預置格式和第二圖片的第二預置格式類型可以根據(jù)實際需要進行設置,本實施例中,優(yōu)選地,上述第二圖片的第二預置格式為“.9.png”圖片格式,第一圖片的第一預置格式為除“.9.png”圖片格式以外的所有圖片格式。即在本實施例中,所述第二圖片為九宮格圖片;所述第一圖片為非九宮格圖片。

      進一步地,上述第一預置圖片壓縮工具的類型也可以根據(jù)實際需要設置,本實施例中,為了降低壓縮后圖片的大小,優(yōu)選地,可以采用pngout工具,該pngout工具可以將常用圖像轉(zhuǎn)換為PNG格式并將其壓縮的工具,因此可以實現(xiàn)對上述第一預置格式的所有圖片進行壓縮??梢岳斫獾氖?,為了提高壓縮效果,還可以針對不同格式的圖片采用不同的壓縮工具。

      上述預置編譯處理工具通常采用aapt(Android Asset Packaging Tool),通過aapt可以將資源文件編譯成二進制文件。其中對資源文件中的圖片處理過程通常是調(diào)用預置的圖片壓縮工具對圖片進行壓縮處理,該調(diào)用預置的圖片壓縮工具指Android編譯平臺自帶的圖片壓縮工具pngcrush程序,該pngcrush程序為aapt內(nèi)置的開源壓縮算法。

      具體地,在Android編譯平臺接收到開發(fā)人員輸入的程序編譯請求后,將首先獲取資源文件下的所有圖片,然后提取所述圖片中為第一預置格式的第一圖片,并調(diào)用上述pngout工具對該第一圖片進行壓縮工作;此外,通過aapt對資源文件進行編譯處理,當進入圖片壓縮流程時,首先提取圖片中為第二預置格式的第二圖片,并對該第二圖片的格式特征數(shù)據(jù)進行提取(在九宮格 圖片中,為了保證圖片格式不變,部分像素數(shù)據(jù)塊是不能被壓縮的,該格式特征數(shù)據(jù)是指不能別壓縮的數(shù)據(jù)塊進行提取,具體地,可以參照現(xiàn)有技術中對九宮格圖片的壓縮);然后對該第二圖片進行壓縮,以保證第二圖片的格式不變。

      應當說明的是,調(diào)用pngout工具對第一圖片壓縮的時間可以根據(jù)實際需要進行設置,在此不做進一步地限定。例如,可以在上述aapt對資源文件進行編譯前(如首先進行第一圖片的壓縮)、在aapt對資源文件進行編譯時(如同時進行第一圖片和第二圖片的壓縮)、也可以在aapt對資源文件進行編譯后(首先進行第二圖片的壓縮,然后進行第一圖片的壓縮)。具體地,本實施例中,可以采用多個進程同時執(zhí)行第一圖片的壓縮和aapt的編譯操作??梢岳斫獾氖牵捎谏鲜鰌ngout工具采取的壓縮方式為極限壓縮,因此對圖片壓縮的時間較長,本實施例中,優(yōu)選地,在接收到上述應用程序編譯請求時,即可開啟一進程執(zhí)行第一圖片的壓縮工作,當應用程序編譯流程執(zhí)行到需要通過aapt進行資源文件編譯處理時,可以同時開啟另一進程啟動aapt對資源文件編譯處理。

      本發(fā)明實施例通過在接收到應用程序編譯請求時,根據(jù)所述應用程序編譯請求獲取對應資源文件中的圖片;提取所述圖片中為第一預置格式的第一圖片,并調(diào)用第一預置圖片壓縮工具壓縮所述第一圖片;調(diào)用預置編譯處理工具對所述資源文件進行編譯,提取所述圖片中為第二預置格式的第二圖片,并通過所述編譯處理工具對所述第二圖片的格式特征數(shù)據(jù)提取后,壓縮所述第二圖片。從而可以實現(xiàn)自定義壓縮工具對圖片壓縮,因此提高了圖片壓縮的效果,減少了安裝包的大小,進而減少傳輸過程中產(chǎn)生的流量,節(jié)省網(wǎng)絡傳輸流量資源。

      應當說明的是,對上述第二圖片的壓縮方式可以根據(jù)實際需要進行設置。例如可以不改變原有aapt壓縮機制,參照圖5,在本發(fā)明應用程序編譯流程的圖片處理方法第二實施例中,壓縮所述第二圖片可以為調(diào)用預置的第二預置圖片壓縮工具壓縮所述第二圖片。該第二預置圖片壓縮工具為pngcrush程序,即在本實施例中,可以通過直接調(diào)用編譯平臺自帶的pngcrush程序?qū)Φ诙D片進行壓縮。

      此外,為了提高壓縮效果,還可以不采用編譯平臺自帶的pngcrush程序?qū)Φ诙D片進行壓縮,具體地,參照圖6,在本發(fā)明應用程序編譯流程的圖片處理方法第三實施例中,上述壓縮所述第二圖片可以為調(diào)用上述第一預置圖片壓縮工具壓縮所述第二圖片。

      優(yōu)選地,對于第二圖片的壓縮可以采用本發(fā)明應用程序編譯流程的圖片處理方法第三實施例的方式:調(diào)用上述第一預置圖片壓縮工具壓縮所述第二圖片。從而在對aapt編譯處理完成生成apk安裝包時,只需要通過接口函數(shù)獲取pngout工具壓縮的圖片即可。

      進一步地,參照圖7,基于本發(fā)明應用程序編譯流程的圖片處理方法任一實施例,在本發(fā)明應用程序編譯流程的圖片處理方法第四實施例中,上述步驟S10之后還包括:

      步驟S30,根據(jù)所述圖片的格式對所述圖片進行分類處理,以獲得第一預置格式的第一圖片和第二預置格式的第二圖片。

      本實施例中,在獲取到上述圖片后,可以根據(jù)圖片的擴展名對圖片進行分類處理,具體地,可以按照上述第一預置格式和第二預置格式對圖片進行分類,以得到九宮格圖片和非九宮格圖片,然后將九宮格圖片儲存到第一預置位置,將非九宮格圖片存儲到第二預置位置,在后續(xù)進行圖片壓縮時,可以直接在分別在第一預置位置和第二預置位置進行圖片讀取即可。由于在本實施例中,首先對圖片進行分類處理,因此無需在圖片壓縮時對每一張圖片進行格式判斷,從而有效提高了壓縮的速度。

      以上所述僅為本發(fā)明的優(yōu)選實施例,并非因此限制其專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構或等效流程變換,直接或間接運用在其他相關的技術領域,均同理包括在本發(fā)明的專利保護范圍內(nèi)。

      當前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1