專利名稱:電子文檔的圖像數(shù)據(jù)處理方法及其裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于電子文檔數(shù)據(jù)處理領(lǐng)域,具體涉及一種電子文檔的圖像數(shù)據(jù)處理方法 及其裝置,所述圖像數(shù)據(jù)處理包括電子文檔的圖像數(shù)據(jù)的存儲、查找、修改、添加和刪除等 操作。
背景技術(shù):
目前存在多種電子文檔格式,每種電子文檔格式都采用不同的方式來描述其中的 圖像。比如,在XPS和MARS文檔中,采用XML語言和Zip打包的方式組織文檔格式,每個圖 像都單獨存儲。當文檔中包括很多個圖像時,由于必須對每個圖像描述其頭部信息、顏色空 間等圖像相關(guān)信息,而導(dǎo)致生成大量冗余內(nèi)容,文檔體積膨脹,從而使得文檔的存儲開銷和 運行時的內(nèi)存開銷變大。而且,由于每次讀取圖像都必須反復(fù)訪問文檔,造成I/O操作次數(shù) 過多,圖像加載速度變慢。另外,對于采用Zip作為底層物理容器的文檔來說,大量的圖像 也會使得壓縮率降低。同時,隨著Zip容器中文檔數(shù)據(jù)的增加,打開文檔的速度也會降低。 又比如,在基于二進制格式的PDF文檔中,二進制格式的圖像數(shù)據(jù)和可復(fù)用的圖像信息零 散地分布在PDF文檔中的各個位置,從而導(dǎo)致圖像的抽取、管理困難,必須要對整個文檔的 描述進行深度的解析,才能獲得其中的圖像數(shù)據(jù)。此外,對于PDF、PS等工具,經(jīng)常利用大量的小體積圖像來拼接形成一副大型圖像 以用于顯示或輸出。所謂小體積圖像通常是指其高、寬或數(shù)據(jù)量大小低于某一閾值的圖像。 對于這種應(yīng)用,需要識別出哪些小體積圖像可以合并,容易出現(xiàn)合并錯誤的情況。所以,不 僅存儲開銷大,而且技術(shù)實現(xiàn)難度大。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是針對現(xiàn)有技術(shù)中存在的上述不足,提出一種高效的 電子文檔的圖像數(shù)據(jù)處理方法及其裝置,以對分散在電子文檔中的圖像進行高效率的統(tǒng)一 管理,從而顯著降低電子文檔中圖像的存儲開銷和運行時的內(nèi)存開銷,并提高對電子文檔 的訪問效率和加載速度。根據(jù)本發(fā)明的一方面,提供一種電子文檔的圖像數(shù)據(jù)存儲方法,該方法包括以下 步驟從電子文檔中收集圖像;建立圖像數(shù)據(jù)包文件和索引結(jié)構(gòu);和按照索引結(jié)構(gòu)將收集 的圖像的圖像數(shù)據(jù)及其索引信息和索引入口寫入圖像數(shù)據(jù)包文件中,并將電子文檔中使用 圖像處的描述替換為一個二元組,所述二元組為收集的圖像的圖像信息的引用和相應(yīng)的圖 像數(shù)據(jù)在索引結(jié)構(gòu)中的位置。所述相應(yīng)的圖像數(shù)據(jù)在索引結(jié)構(gòu)中的位置用在索引結(jié)構(gòu)中為該圖像數(shù)據(jù)分配的 相應(yīng)的索引號表示。根據(jù)本發(fā)明的另一方面,提供一種查找根據(jù)本發(fā)明的電子文檔的圖像數(shù)據(jù)存儲方 法存儲的圖像數(shù)據(jù)的方法,該方法包括以下步驟根據(jù)提供的所要查找的圖像數(shù)據(jù)在索引 結(jié)構(gòu)中的位置從如上保存的電子文檔中獲得所引用的圖像信息;打開圖像數(shù)據(jù)包文件,并
8從圖像數(shù)據(jù)包文件獲取索引入口 ;根據(jù)索引入口查找與所提供的位置對應(yīng)的索引,并提取 該索引中記錄的信息;根據(jù)所提供的位置和提取的索引信息確定所要查找的圖像數(shù)據(jù)在圖 像數(shù)據(jù)包文件中的位置和長度,并讀取該圖像數(shù)據(jù);和將獲得的圖像信息和圖像數(shù)據(jù)返回 給用戶或者緩存。根據(jù)本發(fā)明的另一方面,提供一種修改根據(jù)本發(fā)明的電子文檔的圖像存儲方法存 儲的圖像數(shù)據(jù)的方法,該方法包括以下步驟判斷修改后的數(shù)據(jù)長度是否長于修改前的數(shù) 據(jù)長度;如果修改后的數(shù)據(jù)長度不長于修改前的數(shù)據(jù)長度,則直接在圖像數(shù)據(jù)包文件中原始 的圖像數(shù)據(jù)處進行替換,并根據(jù)修改后的圖像數(shù)據(jù)更新對應(yīng)的索引信息;和如果修改后的數(shù) 據(jù)長度長于修改前的數(shù)據(jù)長度,則在圖像數(shù)據(jù)包文件末尾寫入修改后的圖像數(shù)據(jù),根據(jù)該圖 像數(shù)據(jù)更新對應(yīng)的索引信息,并在圖像數(shù)據(jù)包文件末尾寫入更新的索引信息和索引入口。根據(jù)本發(fā)明的另一方面,提供一種刪除根據(jù)本發(fā)明的電子文檔的圖像存儲方法存 儲的圖像數(shù)據(jù)的方法,該方法包括以下步驟將與所要修改的圖像數(shù)據(jù)對應(yīng)的索引中的記 錄用一條空記錄替換;和直接將所要刪除的圖像數(shù)據(jù)用0替換。根據(jù)本發(fā)明的另一方面,提供一種添加根據(jù)本發(fā)明的電子文檔的圖像存儲方法存 儲的圖像數(shù)據(jù)的方法,該方法包括以下步驟判斷與所要添加的圖像數(shù)據(jù)共同使用的其它 圖像數(shù)據(jù)所在的數(shù)據(jù)段是否已滿;如果所述數(shù)據(jù)段沒有滿,則將所述圖像數(shù)據(jù)添加到該數(shù) 據(jù)段中,并分配該數(shù)據(jù)段中相應(yīng)的索引號;如果所述數(shù)據(jù)段已滿,則建立一個新的數(shù)據(jù)段, 寫入所述圖像數(shù)據(jù),并分配該數(shù)據(jù)段中相應(yīng)的索引號;根據(jù)所述圖像數(shù)據(jù)更新對應(yīng)的索引 信息;和將更新的索引信息和索引入口寫入圖像數(shù)據(jù)包文件末尾。根據(jù)本發(fā)明的另一方面,提供一種電子文檔的圖像數(shù)據(jù)處理裝置,包括存儲單元, 該存儲單元包括收集模塊,從電子文檔收集要處理的圖像;索引處理模塊,在內(nèi)存中建立 索引結(jié)構(gòu),為收集的圖像分配索引號,并根據(jù)該圖像的圖像數(shù)據(jù)更新與索引號對應(yīng)的索引; 圖像數(shù)據(jù)包文件模塊,寫入圖像數(shù)據(jù)包文件的頭部信息,將從收集模塊接收的圖像數(shù)據(jù)寫 入圖像數(shù)據(jù)包文件中與在索引處理模塊中分配的索引號對應(yīng)的數(shù)據(jù)區(qū)中,并將在索引處理 模塊中建立的索引結(jié)構(gòu)中記錄的信息和索引入口等信息寫入到圖像數(shù)據(jù)包文件中;和電子 文檔模塊,將電子文檔中使用圖像處的描述替換為一個二元組,即,相應(yīng)的圖像信息的引用 和在索引處理模塊中分配的索引號。所述存儲單元還可包括排序模塊、編碼模塊和圖像信息模塊。所述圖像數(shù)據(jù)處理裝置還可包括查找單元、修改單元、刪除單元和添加單元。根據(jù)本發(fā)明,通過索弓I結(jié)構(gòu)將零散分布在電子文檔中的圖像數(shù)據(jù)集中存儲在一個 圖像數(shù)據(jù)包文件中,從而使得去除了大量重復(fù)的冗余信息,使得電子文檔中的信息描述更 為簡單,節(jié)省了大量的存儲開銷和運行時的內(nèi)存開銷。而且,根據(jù)不同的分段策略對收集的 圖像數(shù)據(jù)進行有意義的分段,從而可一次性提取出某一數(shù)據(jù)段中的全部圖像數(shù)據(jù)并將其緩 存,以后再次查找時優(yōu)先查找緩存,這樣可減少I/O操作次數(shù),提高訪問效率。此外,提取相 同的圖像信息,也可減少大量重復(fù)的冗余信息描述。另外,在對整個IFC文件進行壓縮的情 況下,還可進一步提高圖像數(shù)據(jù)的壓縮率。
圖1是根據(jù)本發(fā)明的第一實施例的電子文檔的圖像數(shù)據(jù)存儲方法的流程圖。
圖2是根據(jù)本發(fā)明的第二實施例的電子文檔的圖像數(shù)據(jù)存儲方法的流程圖。圖3是根據(jù)本發(fā)明的第三實施例的電子文檔的圖像數(shù)據(jù)存儲方法的流程圖。圖4是根據(jù)本發(fā)明的第四實施例的電子文檔的圖像數(shù)據(jù)查找方法的流程圖。圖5是根據(jù)本發(fā)明的第五實施例的電子文檔的圖像數(shù)據(jù)查找方法的流程圖。圖6是根據(jù)本發(fā)明的第六實施例的電子文檔的圖像數(shù)據(jù)查找方法的流程圖。圖7是根據(jù)本發(fā)明的電子文檔的圖像數(shù)據(jù)處理裝置的存儲單元的框圖。
具體實施例方式在現(xiàn)有的電子文檔中,對于每個圖像,一般都記錄了其圖像信息和DIB格式的圖 像數(shù)據(jù)。圖像信息主要是指顏色空間信息,包括顏色空間的類型、每個通道的顏色信息、調(diào) 色板等。以下,將參考附圖描述根據(jù)本發(fā)明的電子文檔的圖像數(shù)據(jù)處理方法及其裝置。這 里,所述圖像數(shù)據(jù)處理包括圖像數(shù)據(jù)的存儲、查找、修改、添加和刪除。(一 )電子文檔的圖像數(shù)據(jù)存儲通過本發(fā)明的電子文檔的圖像數(shù)據(jù)存儲方法,將零散分布在電子文檔中的圖像數(shù) 據(jù)集中存儲在一個新建的圖像數(shù)據(jù)包文件中,通過索引結(jié)構(gòu)記錄這些圖像在該圖像數(shù)據(jù)包 文件中的偏移位置及其圖像相關(guān)信息,并對電子文檔中使用圖像處的描述內(nèi)容進行了適應(yīng) 性的修改。所述圖像數(shù)據(jù)包文件的擴展名為ifc (Image File Cluster),以下簡稱為IFC文 件。(第一實施例)圖1是根據(jù)本發(fā)明的第一實施例的電子文檔的圖像數(shù)據(jù)存儲方法的流程圖。參考圖1,在步驟S1000中,從電子文檔中收集要處理的圖像。本發(fā)明可處理的電 子文檔格式包括PDF、XPS、CEB、MARS等格式。在這個步驟中,可用數(shù)組記錄所收集的圖像 存于磁盤上的路徑或者在電子文檔中的位置。在步驟S1002中,建立IFC文件和索引結(jié)構(gòu)。這里,IFC文件是指新創(chuàng)建的用于 存儲圖像數(shù)據(jù)和記錄索引信息的文件,至少包括文件頭部信息、存儲圖像數(shù)據(jù)的數(shù)據(jù)區(qū)、索 弓丨、索引入口等部分。文件頭部信息必須位于文件開頭。在文件頭部信息中,可定義文件類 型、版本信息、壓縮單位和壓縮方法等字段。索引中至少記錄相應(yīng)的圖像數(shù)據(jù)在IFC文件中 的偏移位置和該圖像數(shù)據(jù)的長度。索引入口指示索引在IFC文件中的偏移位置。根據(jù)索 引入口和索引中記錄的信息,可確定當前圖像數(shù)據(jù)在IFC文件中相應(yīng)的數(shù)據(jù)區(qū)的位置和長 度。索引入口一定位于IFC文件的末尾,以便于以后的查找、修改、添加和刪除等操作。同 時,在內(nèi)存中為索引結(jié)構(gòu)分配內(nèi)存空間,并建立一個表、樹或其它數(shù)據(jù)結(jié)構(gòu),以備插入索引 或圖像數(shù)據(jù)的信息等。在步驟S1004中,從收集的當前圖像獲得該圖像的圖像信息和圖像數(shù)據(jù)。如上所 述,圖像信息主要是指顏色空間信息,但是,還可包括其它圖像相關(guān)信息,比如,原始電子文 檔中圖像數(shù)據(jù)的壓縮參數(shù)等信息。圖像數(shù)據(jù)在未壓縮時一般都是DIB格式的圖像數(shù)據(jù)。如 果從電子文檔中讀取的圖像數(shù)據(jù)是已經(jīng)壓縮過的圖像數(shù)據(jù),則根據(jù)該電子文檔中的壓縮參 數(shù)對這些圖像數(shù)據(jù)進行解壓縮,將其還原成DIB格式的圖像數(shù)據(jù)。在步驟S1006中,為當前圖像分配索引號。在IFC文件中,各圖像數(shù)據(jù)擁有唯一的 索引號。圖像數(shù)據(jù)的索引號從1開始,按照索引深度優(yōu)先遍歷。可按照圖像收集順序依次為當前圖像分配索引號。此外,也可按照不同的策略將具有共性的一些圖像組織在一起, 即,分在一個數(shù)據(jù)段中,從而可通過預(yù)取和緩存某一數(shù)據(jù)段的方式減少I/O操作次數(shù),優(yōu)化 檢索。也就是說,為每個圖像數(shù)據(jù)分配其所屬數(shù)據(jù)段中相應(yīng)的索引號。比如,在分段策略為 每個數(shù)據(jù)段包括相同數(shù)量或固定數(shù)據(jù)的圖像數(shù)據(jù)的情況下,可使得每個數(shù)據(jù)段包括規(guī)定數(shù) 量的圖像數(shù)據(jù),剩余的圖像數(shù)據(jù)則歸入到最后一個數(shù)據(jù)段中。在使用就近策略的情況下,將 一起使用的圖像數(shù)據(jù)歸入到同一個數(shù)據(jù)段中。比如,將在一頁中使用的所有圖像歸入到一 個數(shù)據(jù)段中。在大小策略的情況下,按照圖像的寬、高、分辨率或者數(shù)據(jù)量大小分段。在無 策略的情況下,對各個數(shù)據(jù)段以及索引組織方式?jīng)]有限制,直接按照圖像收集順序依次為 當前圖像分配索引號??紤]到內(nèi)存占用大小的問題,如果一個數(shù)據(jù)段所有的數(shù)據(jù)太大,則不 太適合緩存。因此,可按照一個粒度進行分段,即,每個數(shù)據(jù)段所包含的圖像數(shù)據(jù)的數(shù)量不 得超過段最大粒度。為了有效地解決索引號沖突的問題,優(yōu)選的是,每個圖像所分配的索引 號為(n-l)*maxcount+m,其中,η表示該圖像屬于第η段,maxcount表示段最大粒度,m表 示該圖像是該段內(nèi)的第m個。在步驟S1008中,將當前圖像的圖像數(shù)據(jù)寫入IFC文件中與所分配的索引號對應(yīng) 的數(shù)據(jù)區(qū)中。在步驟S1010中,根據(jù)當前圖像的圖像數(shù)據(jù)更新索引結(jié)構(gòu)中與所分配的索引 號對應(yīng)的索引。索引可記錄當前圖像數(shù)據(jù)在IFC文件中的偏移位置、數(shù)據(jù)長度、圖像寬度和 高度等信息。根據(jù)索引入口和相應(yīng)的索引信息,可確定IFC中與所分配的索引號對應(yīng)的數(shù) 據(jù)區(qū),在該數(shù)據(jù)區(qū)中,存儲當前圖像的圖像數(shù)據(jù)。在步驟S1012中,將電子文檔中使用當前圖像處的描述替換為一個二元組。在本 發(fā)明中,所述二元組為相應(yīng)的圖像信息的引用和所分配的索引號。在圖像信息是指顏色空 間信息的情況下,所述相應(yīng)的圖像信息的引用即為對當前圖像的顏色空間的引用。由于在 現(xiàn)有的電子文檔中一般都獨立地定義了顏色空間信息,所以可直接引用。在步驟S1014中,判斷是否還有未處理的圖像。如果還有未處理的圖像,則重復(fù)步 驟S1004至步驟S1012。如果收集的所有圖像都處理完畢,則在步驟S1016中,將索引中記 錄的信息和索引入口寫入到IFC文件中,并保存在其中所收集的圖像的描述被替換為所述 二元組的電子文檔。此外,該方法還可包括對圖像數(shù)據(jù)進行編碼的步驟。如上所述,可通過在文件頭 部信息中定義壓縮單位和壓縮方法等字段來設(shè)置圖像數(shù)據(jù)的壓縮方式。比如,當壓縮單位 為圖像數(shù)據(jù)時,可在獲取每個圖像數(shù)據(jù)之后的任何時候,比如,將其寫入IFC文件之前或之 后,采用指定的壓縮方法對這些圖像數(shù)據(jù)分別進行壓縮,而無需再對整個IFC文件進行壓 縮。當壓縮單位為數(shù)據(jù)段時,可在每個數(shù)據(jù)段生成之后采用指定的壓縮方法來對各數(shù)據(jù)段 分別進行壓縮,而無需再對整個圖像數(shù)據(jù)包、各圖像數(shù)據(jù)進行壓縮。當壓縮單位為不壓縮 (字段值為0)時,不對每個圖像數(shù)據(jù)進行壓縮,而是將所有的圖像數(shù)據(jù)存儲在IFC文件中之 后再采用默認壓縮方法對該IFC文件整個進行壓縮。這樣,可進一步提高圖像數(shù)據(jù)的壓縮 率。所述默認壓縮方法可以是flate、小波變換或Djvu等壓縮方法。在對圖像數(shù)據(jù)壓縮之 后,可采用asides等方法對壓縮的圖像數(shù)據(jù)進行加密。此外,對于電子文檔中的部分圖像而言,圖像信息很可能是相同的。比如,對于用 于拼接一副大型圖像的許多個小體積圖像,它們使用相同的顏色空間。在這種情況下,可抽 取這些相同的圖像信息,并將其存儲在一個圖像信息表中,從而可去除大量重復(fù)的冗余描述信息,達到節(jié)省存儲開銷的目的??蓪D像信息表保存在IFC文件中,在其文件頭部信息 中記錄該圖像信息表在該IFC文件中的位置?;蛘撸蓪D像信息表作為單獨的文件保存 在電子文檔中。此時,在步驟S1012中,將電子文檔中使用當前圖像處的描述替換為圖像信 息表的引用和所分配的索引號。或者,可根據(jù)電子文檔的描述方式在該電子文檔中直接定 義相同的圖像信息。比如,在相同的圖像信息為顏色空間Cl的情況下,可在電子文檔中添 加顏色空間Cl的定義,在其使用相關(guān)圖像處直接引用該顏色空間Cl。綜上所述,通過步驟S1004至步驟S1016,按照索引結(jié)構(gòu)將圖像數(shù)據(jù)及其索引信息 和索引入口寫入圖像數(shù)據(jù)包文件中,并將電子文檔中使用圖像處的描述替換為相應(yīng)的圖像 信息的引用和所分配的索引號。這里,索引號表示相應(yīng)的圖像數(shù)據(jù)在索引結(jié)構(gòu)中的位置。圖 像數(shù)據(jù)在索引中的位置還可以用偏移等信息來表示。(第二實施例)如在圖1的步驟S1006中所述,可按照不同的分段策略對圖像數(shù)據(jù)進行有意義的 分段。此時,為當前圖像分配的索引號是其所屬數(shù)據(jù)段中相應(yīng)的編號。有時,原始的圖像收 集順序本身就符合分段的順序,因此,可依次為當前圖像數(shù)據(jù)分配索引號。但是,有時,原始 的圖像收集順序可能并不是那么有序。此時,在不同的分段策略的情況下,很可能不能依次 為當前圖像分配索引號,而是根據(jù)不同的數(shù)據(jù)段為當前圖像分配其所屬數(shù)據(jù)段中相應(yīng)的索 引號。也就是說,就圖像的收集順序而言,所分配的索引號是跳躍式的。在這種情況下,不 是逐段地寫入圖像數(shù)據(jù),而是多個數(shù)據(jù)段同時寫入圖像數(shù)據(jù)。因此,可在收集圖像之后對這 些圖像進行排序,以使可按照排序的順序依次為當前圖像分配索引號。并且,只有在排序之 后,才能保證無論在哪種分段策略下都可以逐段地進行操作。以下,將參考圖2描述根據(jù)本發(fā)明的第二實施例的電子文檔的圖像數(shù)據(jù)存儲方 法。該方法與圖1所示的圖像數(shù)據(jù)存儲方法的不同之處在于,添加了圖像排序步驟,并且逐 段地將索引中記錄的信息輸出到IFC文件中,而不是在將所有圖像相關(guān)信息記錄到索引結(jié) 構(gòu)中之后再將全部索引信息一起輸出到IFC文件中。以下僅描述與圖1不同的步驟。在收集圖像步驟S1000之后,執(zhí)行步驟S1001,在步驟S1001中,按照一定的順序?qū)?收集的圖像進行排序。這里,排序的順序可與分段策略相對應(yīng),可以是圖像被使用的順序、 圖像體積大小的順序、解析度順序、圖像寬度順序、圖像高度順序、圖像信息(比如,顏色空 間、圖像類型)順序或者圖像名稱順序等。在步驟1006中,由于已按照與分段策略相對應(yīng)的策略對圖像進行了排序,所以在 這個步驟中可按照排序的順序依次為圖像數(shù)據(jù)分配索引號。因此,也可以說,排序的結(jié)果對 分段策略的執(zhí)行有優(yōu)化、指導(dǎo)的作用。在步驟S1018中,判斷當前段是否處理完畢。如果當前段沒有處理完畢,則重復(fù)步 驟S1004至步驟S1012。否則,執(zhí)行步驟S1020。在步驟S1020中,將索引中記錄的當前段 的信息寫入到IFC文件中。在步驟S1022中,判斷是否還有未處理的數(shù)據(jù)段。如果還有未處理的數(shù)據(jù)段,則重 復(fù)步驟S1004至步驟S1020。否則,執(zhí)行步驟S1024。在步驟S1024中,將索引入口寫入到 IFC文件中,并保存在其中所收集的圖像的描述被替換為所述二元組的電子文檔。顯而易見的是,可刪除步驟S1020,而是在步驟S1022和步驟S1024之間插入將記 錄所有段的圖像相關(guān)信息的全部索引信息一起寫入到IFC文件的步驟,此時,只要保證各個部分互相指向的偏移正確即可。但是,相比而言,逐段輸出內(nèi)存占用小,全部一起輸出邏 輯簡單,但是運行占用更多的內(nèi)存。(第三實施例)如上所述,可根據(jù)不同的策略對收集的圖像數(shù)據(jù)進行有意義的分段,從而可通過 預(yù)取和緩存某段的圖像數(shù)據(jù)來更有效率地使用這些圖像數(shù)據(jù)。對于索引結(jié)構(gòu),優(yōu)選使用二 級索引結(jié)構(gòu)。二級索引結(jié)構(gòu)可提高索引組織的靈活性、索引加載的速度,從而提高運行的效 率,適用范圍更廣。在本實施例的二級索引結(jié)構(gòu)中,設(shè)置主索引和段索引。相應(yīng)地,在IFC 文件中記錄主索引入口(主索引在IFC文件中的偏移位置)。主索引中至少記錄段索引數(shù) 量、段索引在IFC文件中的偏移位置和該段中包括的圖像數(shù)據(jù)的數(shù)量等信息。段索引中至 少記錄段索引對應(yīng)的數(shù)據(jù)段在IFC文件中的偏移位置、當前索引對應(yīng)的圖像數(shù)據(jù)在該數(shù)據(jù) 段中的偏移位置、圖像數(shù)據(jù)長度等信息。根據(jù)主索引入口、主索引和段索引中記錄的信息, 可唯一地確定當前圖像數(shù)據(jù)在IFC文件和索引結(jié)構(gòu)中的位置和長度。以下,給出了一個二級索引結(jié)構(gòu)及其相應(yīng)的IFC文件的示例的詳細說明。下述IFC 文件優(yōu)選用于寬、高小于65536且數(shù)據(jù)總長度小于65536字節(jié)的圖像,更優(yōu)選用于圖像數(shù)據(jù) 長度不超過4k且圖像寬度和高度有一項小于4的圖像。1.圖像數(shù)據(jù)包(IFC)文件基本結(jié)構(gòu)
圖像數(shù)據(jù)包文件的基本結(jié)構(gòu)是
[Header]
[Data Section 1]
[Section Index 1]
[Data Section 2]
[Section Index 2]
[Data Section n]
[Section Index n]
[Main Index]
[Main Index Entry]
表1圖像數(shù)據(jù)包基本結(jié)構(gòu)信息說明
2.文件頭部信息文件頭部信息的數(shù)據(jù)結(jié)構(gòu)如下表所示。表2文件頭部信息的數(shù)據(jù)結(jié)構(gòu) 3.主索引主索引由多項索引描述組成,其基本結(jié)構(gòu)是[Index Count][Section Max Count][Normative][Index Description 1][Index Description 2]..................[Index Description n]索引描述給出了對應(yīng)的段索引的描述信息,包括段索引位置、包含的圖像數(shù)據(jù)數(shù)
14里等{曰息。表3主索引信息的數(shù)據(jù)結(jié)構(gòu) 4.段索引段索引中包含對應(yīng)的數(shù)據(jù)段位置,以及各圖像數(shù)據(jù)的信息。其結(jié)構(gòu)是[Data Section Position][Image Description 1][Image Description 2]..................[Image Description n]圖像數(shù)據(jù)信息(Image Description)包含了寬、高、偏移量、數(shù)據(jù)長度等信息。表4段索引信息的數(shù)據(jù)結(jié)構(gòu)
15 5.編號映射圖像數(shù)據(jù)包中,各圖像數(shù)據(jù)擁有唯一的編號。為了有效地解決索引號沖突的問 題,每個圖像數(shù)據(jù)所分配的索引號為(n-l)*maxCOimt+m,其中,η表示該圖像屬于第η段, maxcount表示段最大粒度,m表示該圖像是該段內(nèi)的第m個。6.圖像壓縮數(shù)據(jù)壓縮方式由壓縮單位、壓縮方法指定。當壓縮單位為數(shù)據(jù)段(字段值為1)時, 可在每個數(shù)據(jù)段生成之后采用指定的壓縮方法來對各數(shù)據(jù)段分別進行壓縮,整個圖像數(shù)據(jù) 包、各圖像數(shù)據(jù)無需再進行壓縮。當壓縮單位為圖像數(shù)據(jù)(字段值為2)時,可在獲取DIB 格式的圖像數(shù)據(jù)之后采用指定的壓縮方法對每個圖像數(shù)據(jù)分別單獨進行壓縮,整個圖像數(shù) 據(jù)包、各數(shù)據(jù)段無需再進行壓縮。當壓縮單位和壓縮方法都表示不壓縮(字段值為0)時, 在生成圖像數(shù)據(jù)包文件之后采用Flate等方法對整個包進行壓縮。為了平衡壓縮率和讀寫效率,壓縮單位為數(shù)據(jù)段的處理方式是被強烈推薦的。此 外,考慮到小體積圖像大量出現(xiàn)時,往往是用于圖像拼接的情形,所以此處并未提供有損圖 像壓縮的方式,以避免大量的質(zhì)量損害。在加密時,如果壓縮單位值不為0,則采用指定壓縮方法和密碼,對壓縮后的數(shù)據(jù) 段或者各圖像數(shù)據(jù)進行加密,存儲在文檔中;如果壓縮單位值為0,則按照正常的加密流程 進行處理。7.存儲順序這里并不限制以上所述的文件頭部信息、數(shù)據(jù)段、段索引、主索引之間的實際物理 順序,而是采用了偏移值進行數(shù)據(jù)塊定位。應(yīng)用程序可以根據(jù)具體需要來決定它們之間的 實際物理存儲順序。但無論采用那種順序,文件頭部信息必須位于文件開頭,主索引入口必 須位于文件末尾。以下,將結(jié)合上述二級索引結(jié)構(gòu)描述根據(jù)本發(fā)明的第三實施例的圖像數(shù)據(jù)存儲方 法的具體應(yīng)用示例。假設(shè)一副寬度為600、高度為1200的圖像,在電子文檔中存儲為1200個高度為1, 寬度為600的小體積圖像,分別用Pl到P1200表示。由于Pl到P1200是用來拼接表示同一幅圖像,所以Pl到P1200的顏色空間相同,將其表示為顏色空間Cl。這里,顏色空間信息 即為上述圖像信息。在該示例,按照圖像名稱的順序?qū)D像Pl至P1200進行排序,以索引號依次加 1的順序為當前圖像分配索引號,生成一個規(guī)范化的圖像數(shù)據(jù)包,每個數(shù)據(jù)段中最多包含 1000個小圖像。即,段最大粒度為1000,圖像Pl到P1000屬于第一數(shù)據(jù)段,第一數(shù)據(jù)段包 含1000個圖像數(shù)據(jù),圖像P1001到P1200屬于第二數(shù)據(jù)段,第二數(shù)據(jù)段包含200個圖像數(shù)據(jù)。參考圖3,在步驟SllOO中,使用數(shù)組記錄Pl到P1200這1200個圖像所在位置(存 于磁盤上的路徑或者在電子文檔中的位置)。在步驟SllOl中,按照圖像名稱的順序?qū)υ摂?shù) 組進行排序。在步驟S1102中,寫入IFC文件的文件頭部信息,其中,將壓縮單位設(shè)置為2,壓縮 方法設(shè)置為1。即,以圖像數(shù)據(jù)為單位采用flate編碼進行壓縮。同時,在內(nèi)存中建立一個 空的主索引和段索引及其數(shù)據(jù)結(jié)構(gòu)。在步驟S1104中,獲得圖像Pl的顏色空間Cl和DIB格式的圖像數(shù)據(jù)D1。在步驟Sl 106中,為圖像Pl分配索引號1。在步驟S1107中,使用flate編碼對圖像數(shù)據(jù)Dl進行壓縮,得到壓縮的圖像數(shù)據(jù) CDl。在步驟S1108中,將壓縮的圖像數(shù)據(jù)OTl寫入IFC文件中與索引號1對應(yīng)的數(shù)據(jù) 段中。在步驟SlllO中,將壓縮的圖像數(shù)據(jù)⑶1在段索引Sl中的數(shù)據(jù)位置P0S1、數(shù)據(jù)長 度LEm、寬度Wl、高度Hl形成一條記錄Recordl,并記錄在段索引Sl中。在步驟S1112中,將電子文檔中使用圖像Pl處的描述替換為顏色空間Cl和索引 號1。以下依次執(zhí)行步驟1104至步驟1112對圖像P2到P1000進行處理。如此,在段索 引Sl中形成有1000條記錄,即,Recordl-RecordlOOO。圖像Pl到P1000都具有相同的顏 色空間Cl。其后,在步驟S1120中,首先,將圖像數(shù)據(jù)⑶1在IFC文件中的偏移位置和在段索 引Sl中記錄的Recordl-RecordlOOO的信息寫入到IFC文件中,并將段索引Sl在IFC文 件中的偏移位置和該段中包含的圖像數(shù)量1000形成一個段索引信息SRl記錄在主索引Ml中。接著,對于圖像P1001到P1200,同樣重復(fù)執(zhí)行步驟1104到步驟1112,在段索引S2 中形成200條記錄,S卩,Recordl001-Recordl200,這些圖像的顏色空間也都是Cl。同樣,對于段索引S2,在步驟Sl 120中,將圖像數(shù)據(jù)⑶1001在IFC文件中的偏移 位置和在段索引S2中記錄的RecOrdl001-RecOrdl200的信息寫入到IFC文件中,并將段索 引S2在IFC文件中的偏移位置和該段中包含的圖像數(shù)量200形成一個段索引信息SR2記 錄在主索引Ml中。最后,在步驟Sl 124中,將主索引Ml中記錄的信息和主索引入口寫入IFC文件中, 所述主索引Ml中記錄的信息包括段索引數(shù)量2、段最大粒度1000、規(guī)范化參數(shù)0x01、段索 引Sl在IFC文件中的偏移位置及其包含的圖像數(shù)量1000以及段索引S2在IFC文件中的偏移位置及其包含的圖像數(shù)量200。最后,保存使用圖像處的描述分別被替換為索引編號 1-1200和顏色空間Cl的電子文檔。經(jīng)過以上處理,除去圖像數(shù)據(jù),上述二級索引結(jié)構(gòu)大致需要1200*14 = 16800字節(jié)。在電子文檔中,使用如下的形式引用圖像數(shù)據(jù)和顏色空間。<Image ID =” 1” Index =” 1” ColorSpace =” C 1” ></Image>…<Image ID =” 1200” Index =” 1200” ColorSpace =” C 1” ></Image>如果直接采用XML描述各個圖像的使用信息,則采用類似如下的結(jié)構(gòu)<Image ID = ”1”Width =”600”Height =”1”><Loc>thi s_i s_an_image 1. BMP</Loc></Image>…<Image ID =” 1200” Width =” 600” Height =,,1,,><Loc>thi s_i s_an_image 1200. PNG</Loc></Image>那么大約需要額外1200*45 = 54000字節(jié),約是上述二級索引結(jié)構(gòu)的3. 2倍。而 將這些圖像組織到文檔中,還需要額外描述各個圖像的名稱以及在電子文檔中的偏移,所 以還額外需要大致25*1200 = 30000字節(jié)。綜合考慮,以上實施例較原來的表示方式提高 了 4-5倍的存儲效率。以上計算過程并未涉及到圖像數(shù)據(jù)大小。實際使用中,小體積圖像大小通常更加 小,往往會只有一百字節(jié)到三百字節(jié)。在這種情況下,索引結(jié)構(gòu)相對原始描述信息越小,所 能提供的壓縮效率就越高。原始描述信息會往往達到小圖像數(shù)據(jù)大小的30%。而上述二級 索引結(jié)構(gòu)平均到每個小圖像上只會達到每個小圖像數(shù)據(jù)大小的3% -5%。因此,本實施例 的二級索引結(jié)構(gòu)顯著地降低了電子文檔中圖像的存儲開銷和運行時的內(nèi)存開銷。以下將描述如何對根據(jù)本發(fā)明的電子文檔的圖像數(shù)據(jù)存儲方法而存儲的圖像數(shù) 據(jù)進行查找、修改、添加和刪除。( 二)電子文檔的圖像數(shù)據(jù)查找方法如上所述,通過本發(fā)明的電子文檔的圖像數(shù)據(jù)存儲方法,將分散在電子文檔中的 圖像集中存儲在一個IFC文件中,并根據(jù)不同的分段策略對這些圖像進行了有意義的分 段,從而使得僅通過一次I/O操作就可提取出具有共性的一些圖像數(shù)據(jù),并且,通過將這些 圖像數(shù)據(jù)進行緩存,在后續(xù)的查找等操作中可直接讀取緩存,而不必重復(fù)地多次執(zhí)行I/O 操作。(第四實施例)圖4是根據(jù)本發(fā)明的第四實施例的電子文檔的圖像數(shù)據(jù)查找方法的流程圖,該方 法所查找的圖像數(shù)據(jù)是根據(jù)本發(fā)明的存儲方法而存儲的圖像數(shù)據(jù)。在進行查找時,首先由 用戶或者以其它途徑提供所要查找的圖像數(shù)據(jù)在索引結(jié)構(gòu)中的位置。如前所述,可用索引號或者其它偏移信息來表示圖像數(shù)據(jù)在索引結(jié)構(gòu)中的位置。在本說明書中,使用索引號作 為示例來表示相應(yīng)的圖像數(shù)據(jù)在索引結(jié)構(gòu)中的位置。在步驟S2000中,根據(jù)提供的索引號從如上保存的電子文檔中獲得所引用的圖像 信息。在將相同的圖像信息寫入到一個圖像信息表的情況下,通過該圖像信息表獲取相應(yīng) 的圖像信息。在步驟S2002中,打開IFC文件,獲取索引入口。索引入口指示索引在IFC文件中 的偏移位置。在IFC文件中包括頭部信息的情況下,獲取其頭部信息。在步驟S2004中,根據(jù)索引入口查找與所提供的索引號對應(yīng)的索引,并提取該索 引中記錄的信息,包括相應(yīng)的圖像數(shù)據(jù)在IFC文件中的偏移位置和該圖像數(shù)據(jù)的長度等信 息。所述查找可利用順序或多叉查找算法,或者在數(shù)據(jù)結(jié)構(gòu)長度固定的情況下,可通過字節(jié) 計算實現(xiàn)。在步驟S2006中,根據(jù)索引號和提取的索引信息確定相應(yīng)的圖像數(shù)據(jù)在IFC文件 中的位置和長度,并讀取該圖像數(shù)據(jù)。在需要讀取一個數(shù)據(jù)段的圖像數(shù)據(jù)的情況下,讀取該 圖像數(shù)據(jù)所屬數(shù)據(jù)段中的全部圖像數(shù)據(jù)。在步驟2008中,將獲得的圖像信息和圖像數(shù)據(jù)返回給用戶或者緩存。對于根據(jù)不同的分段策略對圖像數(shù)據(jù)進行有意義的分段的情況,緩存步驟可使得 后續(xù)的查找等操作更為有效率。具體地講,在通過第一次提取出某一數(shù)據(jù)段中的全部圖像 數(shù)據(jù)并將其緩存之后,在以后查找時可優(yōu)先查找緩存中的圖像數(shù)據(jù)。如果要查找的圖像數(shù) 據(jù)存在于緩存中,則直接讀取緩沖中的內(nèi)容,而不必重復(fù)執(zhí)行I/O操作。如果要查找的圖像 數(shù)據(jù)不存在于緩存中,則執(zhí)行圖4所示的正常查找流程。(第五實施例)如上所述,在IFC文件的頭部信息中可定義壓縮單位和壓縮方法等字段。此時,在 從IFC文件中讀取圖像數(shù)據(jù)時,應(yīng)根據(jù)所設(shè)置的壓縮單位和壓縮方法對讀取的圖像數(shù)據(jù)、 數(shù)據(jù)段或者整個IFC文件進行解碼,以還原DIB格式的圖像數(shù)據(jù)。這里,解碼包括解壓縮和 解密。圖5是根據(jù)本發(fā)明的第五實施例的電子文檔的圖像數(shù)據(jù)查找方法的流程圖。該方 法與圖4的查找方法的不同之處在于,增加了根據(jù)IFC文件頭部信息中設(shè)置的壓縮單位和 壓縮方法對圖像數(shù)據(jù)進行解碼的步驟。以下,僅描述不同的步驟。在步驟2003中,判斷IFC文件頭部信息中設(shè)置的壓縮單位是否為不壓縮。如果壓 縮單位為不壓縮,則在步驟S2010中,根據(jù)頭部信息中設(shè)置的壓縮方法對整個IFC文件進行 解碼。否則,執(zhí)行步驟S2004。在步驟S2012中,判斷IFC文件頭部信息中設(shè)置的壓縮單位是否為數(shù)據(jù)段。如果 壓縮單位為數(shù)據(jù)段,則首先,在步驟S2014中,根據(jù)索引號和提取的索引信息確定索引號所 在數(shù)據(jù)段在IFC文件中的位置和長度,并讀取該數(shù)據(jù)段,然后,在步驟S2018中,根據(jù)頭部信 息中設(shè)置的壓縮方法對讀取的數(shù)據(jù)段進行解碼。如果壓縮單位為圖像數(shù)據(jù),則首先,在步驟 S2016中,根據(jù)索引號和提取的索引信息確定與索引號對應(yīng)的圖像數(shù)據(jù)在IFC文件中的位 置和長度,并讀取該圖像數(shù)據(jù),然后,在步驟S2020中,根據(jù)頭部信息中設(shè)置的壓縮方法對 讀取的圖像數(shù)據(jù)進行解碼。在步驟S2008中,根據(jù)需要將圖像數(shù)據(jù)或數(shù)據(jù)段中的全部圖像數(shù)據(jù)返回給用戶或者緩存。(第六實施例)以下,將參考圖6描述查找根據(jù)上述二級索引結(jié)構(gòu)存儲的電子文檔圖像數(shù)據(jù)的實 施例。假設(shè)要讀取圖像P1010的圖像信息和圖像數(shù)據(jù)。由于索引的數(shù)據(jù)結(jié)構(gòu)長度固定,所 以段索引的查找通過字節(jié)計算來實現(xiàn)。在步驟S2100中,根據(jù)索引號1010從保存的電子文檔中獲得相應(yīng)的顏色空間Cl。在步驟2110中,打開IFC文件,讀取頭部信息,獲得壓縮單位為2、壓縮方法為1等
fn息ο在步驟S2130中,根據(jù)IFC文件末尾記錄的主索引入口找到主索引M1,并讀取主索 引Ml中記錄的信息,包括段索引數(shù)量2、段最大粒度1000、規(guī)范化參數(shù)0x01等。根據(jù)索引 號1010,確定所要查找的圖像數(shù)據(jù)位于第1010/1000+1 = 2個數(shù)據(jù)段中。假設(shè)主索引入口 所指示的主索引在IFC文件中的偏移位置為PM1,則根據(jù)表3中的主索引信息的數(shù)據(jù)結(jié)構(gòu), 跳轉(zhuǎn)到IFC文件中的偏移為PMl+ (4+2+1) + (4+2) * (2-1)字節(jié)處,直接讀取4個字節(jié),獲取段 索引S2在IFC文件中的偏移位置PS2,再讀取2個字節(jié)獲得第2數(shù)據(jù)段中所包含的圖像數(shù) 據(jù)的數(shù)量200。在步驟S2140中,根據(jù)索引號1010、段最大粒度1000和規(guī)范化參數(shù)0x01,確定 P1010在段索引S2的第1010% 1000 = 10條信息處。根據(jù)段索引S2的位置PS2和表4中 顯示的段索引信息的數(shù)據(jù)結(jié)構(gòu),可計算得到第10條信息RecordlOlO的位置在IFC文件中 的PS2+(4+2+2+2)* (10-2)字節(jié)處,讀取之后的4個字節(jié)獲得P1010的CD1010在IFC文件 中的位置,再讀取2個字節(jié)獲得CD1010的長度,再讀取2個字節(jié)獲得P1010的寬度,再讀取 2個字節(jié)獲得P1010的高度。在步驟S2150中,利用讀取獲得的⑶1010的位置和長度,在IFC文件中讀取圖像 數(shù)據(jù) CDlOlO0在步驟S2160中,使用f late編碼對⑶1010進行解壓縮得到P1010的原始圖像數(shù) 據(jù) D1010。在步驟S2170中,將解壓縮后的圖像數(shù)據(jù)D1010和相應(yīng)的顏色空間Cl返回給用戶。如上所述,如果在IFC文件的頭部信息中記錄的壓縮單位為數(shù)據(jù)段,則在讀取數(shù) 據(jù)段之后對數(shù)據(jù)段進行解碼,如果壓縮單位為不壓縮,則在打開IFC文件時對IFC文件進行解碼。同樣,如上所述,第一次可根據(jù)索引號在索引中進行正常的查找,之后把該索引號 所在數(shù)據(jù)段中的所有圖像數(shù)據(jù)緩存在內(nèi)存中。下次查找時優(yōu)先查找緩存的數(shù)據(jù)段。比如, 采用使用就近策略進行分段,將一頁所有的圖像數(shù)據(jù)存儲在一個數(shù)據(jù)段中。在第一次打開 這個頁面時,讀取該數(shù)據(jù)段中的所有圖像數(shù)據(jù)及其段索引信息并將其緩存,以后每次查找 時優(yōu)先在緩存中查找。以下是在該實施例中進行緩存優(yōu)先查找的流程檢查在內(nèi)存是否存在緩存的段索引;如果在內(nèi)存中不存在緩存的段索引,則執(zhí)行圖6的正常查找過程;如果在內(nèi)存中存在緩存的段索引,則根據(jù)提供的索引號和該段索引中記錄的信息 判斷要查找的圖像數(shù)據(jù)是否在緩沖的段索引中;
如果要查找的圖像數(shù)據(jù)不存在于緩存的段索引中,則執(zhí)行圖6的正常查找過程;如果要查找的圖像數(shù)據(jù)存在于緩存的段索引中,則直接讀取緩存中的圖像數(shù)據(jù)。從上可看出,本發(fā)明對于分散在電子文檔中的圖像數(shù)據(jù)的統(tǒng)一管理的優(yōu)勢。原始 的方式是使用時才查找、讀取相應(yīng)的圖像數(shù)據(jù),所以每次讀取必然會引起一次I/O操作。并 且,由于小體積圖像之間沒有相互關(guān)系,也沒有成組的信息,所以很難實現(xiàn)預(yù)取操作,節(jié)省 I/O操作。而IFC文件可以按照圖像數(shù)據(jù)段或者整個IFC文件等粒度加載進內(nèi)存,實現(xiàn)了數(shù) 據(jù)預(yù)取,使用時不一定需要進行I/O操作,而可以將預(yù)取的數(shù)據(jù)直接進行返回,使得I/O性 能得到改善。特別的,當需要一次性提取所有小體積圖像時,只需要一次性讀取IFC文件, 而原始的方式則需要多次I/O操作進行遍歷操作。(三)電子文檔的圖像數(shù)據(jù)修改方法在修改根據(jù)本發(fā)明的電子文檔的圖像數(shù)據(jù)存儲方法存儲的圖像數(shù)據(jù)時,首先,判 斷修改后的數(shù)據(jù)長度是否長于修改前的數(shù)據(jù)長度。如果修改后的數(shù)據(jù)長度不長于修改前的 數(shù)據(jù)長度,則直接在IFC文件中原始的圖像數(shù)據(jù)處進行替換,并根據(jù)修改后的圖像數(shù)據(jù)更 新對應(yīng)的索引信息。否則,在IFC文件末尾寫入修改后的圖像數(shù)據(jù),根據(jù)該圖像數(shù)據(jù)更新對 應(yīng)的索引信息,并在IFC文件末尾寫入更新的索引和索引入口。以下,將給出在使用第三實施例的存儲方法存儲電子文檔的圖像數(shù)據(jù)的情況下修 改圖像數(shù)據(jù)的方法。假設(shè)要修改的圖像數(shù)據(jù)為P1001,新的圖像數(shù)據(jù)為ND1001。如果ND1001壓縮后的長度不大于⑶1001的長度,則執(zhí)行以下步驟1.打開IFC文件。2.利用圖6的查找方法,找到CD1001的位置。3.將CD1001替換為ND1001壓縮后的數(shù)據(jù)。4.修改段索引S2中P1001對應(yīng)的信息RecordlOOl,將其數(shù)據(jù)長度、寬、高修改為 ND1001 的值。5.保存。如果ND1001壓縮后的長度大于⑶1001的長度,則執(zhí)行以下步驟1.打開IFC文件。2.利用圖6的查找方法,讀取主索引Ml和段索引S2。3.在IFC文件末尾寫入ND1001壓縮后的數(shù)據(jù)。4.對S2中的RecordlOOl進行修改,將ND1001壓縮后的數(shù)據(jù)在IFC文件中的偏移 位置、數(shù)據(jù)長度、圖像的寬、高寫入RecordlOOl。5.在IFC文件末尾寫入段索引S2。6.將主索引Ml中段索引S2在IFC文件中的偏移位置改為段索引S2在IFC文件 中的新的偏移位置。7.在IFC文件末尾寫入主索引Ml。8.在IFC文件末尾寫入主索引Ml在IFC文件中的偏移位置,S卩,主索引入口。9.保存。另一種方法是無論修改后的數(shù)據(jù)長度如何,都直接在IFC文件末尾寫入修改后的 圖像數(shù)據(jù),更新對應(yīng)的索引信息,并在IFC文件末尾寫入更新的索引和索引入口。在以上示 例中,即,無論ND1001壓縮后的數(shù)據(jù)長度多長,都直接在IFC文件末尾追寫圖像數(shù)據(jù),而不進行替換。(四)電子文檔的圖像數(shù)據(jù)刪除方法在刪除根據(jù)本發(fā)明的電子文檔的圖像存儲方法存儲的圖像數(shù)據(jù)時,可將原始的 IFC文件全部解開,生成一個新的IFC文件,也可直接刪除或者增量刪除。直接刪除包括以下步驟首先,修改索引,將該圖像數(shù)據(jù)對應(yīng)的索引中的記錄用一 條空記錄替換;然后,直接將所要刪除的圖像數(shù)據(jù)用0替換。增量刪除包括以下步驟首先,修改索引,將該圖像數(shù)據(jù)對應(yīng)的索引中的記錄用一 條空記錄替換;然后,在文件末尾重新寫入修改后的索引和索引入口。以下,將給出在使用第三實施例的存儲方法存儲電子文檔的圖像數(shù)據(jù)的情況下刪 除圖像數(shù)據(jù)的方法。假設(shè)要刪除圖像P1001。在直接刪除的情況下,執(zhí)行以下步驟1.打開IFC文件。2.利用圖6的查找方法,讀取主索引Ml和段索引S2,找到RecordlOOl 03.將RecordlOOl的信息全部置為0。4.將原始⑶1001處的數(shù)據(jù)全部設(shè)為0。5.保存。在增量刪除的情況下,執(zhí)行以下步驟1.打開IFC文件。2.利用圖6的查找方法,讀取主索引Ml和段索引S2。3.將段索引S2中的RecordlOOl的信息全部置為0。4.在IFC文件末尾寫入段索引S2。5.將主索引Ml中段索引S2在IFC文件中的偏移位置改為段索引S2在IFC文件 中的新的偏移位置。6.在IFC文件末尾寫入主索引Ml。7.在IFC文件末尾寫入主索引Ml的偏移位置,S卩,主索引入口。8.保存。(五)電子文檔的圖像數(shù)據(jù)添加方法如果是默認的優(yōu)化方式或初來就近的其他方式,則將新的圖像數(shù)據(jù)直接寫入IFC 文件末尾,按照生成的方式分配索引號,根據(jù)該圖像數(shù)據(jù)更新索引,并在IFC文件末尾寫入 更新的索引和索引入口。在采用諸如使用就近策略等分段策略的情況下,首先,判斷與該圖像數(shù)據(jù)共同使 用的其它圖像數(shù)據(jù)所在的數(shù)據(jù)段是否已滿,即,是否達到段最大粒度。如果沒有滿,則將該 圖像數(shù)據(jù)添加到這個數(shù)據(jù)段中,并分配該數(shù)據(jù)段中相應(yīng)的索引號。具體地講,所分配的索引 號為這個段里最大的索引號+1。否則,建立一個新的數(shù)據(jù)段,并按照生成的方式分配索引 號。在寫入圖像數(shù)據(jù)之后,根據(jù)該圖像數(shù)據(jù)更新對應(yīng)的索引,并將更新的索引和索引入口寫 入IFC文件末尾。以下,將給出在使用第三實施例的存儲方法存儲電子文檔的圖像數(shù)據(jù)的情況下添 加圖像數(shù)據(jù)的方法。假設(shè)要添加一個新的小體積圖像文件P1201。1.打開IFC文件。
2.利用圖6的查找方法,讀取主索引Ml。3.讀取主索引Ml中記錄的段索引S2的信息。4.由于這個IFC是規(guī)范化的,并且段索引S2中的圖像數(shù)量少于最大粒度1000,所 以在IFC文件末尾寫入⑶1201。5.在段索引S2中添加ReCordl201,填入CD1201的偏移位置、數(shù)據(jù)長度、P1201的
寬和高。6.在IFC文件末尾寫入更新的段索引S2。7.更新主索引Ml中記錄的段索引S2的信息,并將段索引S2在IFC文件中的新的 偏移位置及其所包含的圖像數(shù)據(jù)的數(shù)量201寫入到主索引Ml中。8.將主索引Ml寫入IFC文件末尾。9.在IFC文件末尾寫入主索引Ml的新的偏移位置,即,主索引入口。10.保存 IFC 文件。(六)電子文檔的圖像數(shù)據(jù)處理裝置根據(jù)本發(fā)明的電子文檔的圖像數(shù)據(jù)處理裝置至少包括存儲單元,還可包括查找單 元、修改單元、刪除單元和添加單元。查找單元、修改單元、刪除單元和添加單元分別與存儲 單元連接。參考圖7,存儲單元至少包括收集模塊10、圖像處理模塊20和輸出模塊30。圖像 處理模塊20至少包括索引處理模塊23,輸出模塊30包括IFC文件模塊31和電子文檔模塊 32。在圖像處理模塊20僅包括索引處理模塊23的情況下,收集模塊10從電子文檔收 集要處理的圖像,為圖像處理模塊20和輸出模塊30提供所收集的圖像的圖像數(shù)據(jù)和圖像 信息。索引處理模塊23在內(nèi)存中建立索引結(jié)構(gòu),為收集的圖像分配索引號,并根據(jù)該圖像 的圖像數(shù)據(jù)更新與索引號對應(yīng)的索引。IFC文件模塊31寫入數(shù)據(jù)包文件的頭部信息,將從 收集模塊10接收的圖像數(shù)據(jù)寫入IFC文件中與在索引處理模塊23中分配的索引號對應(yīng)的 數(shù)據(jù)區(qū)中,并將在索引處理模塊23中建立的索引結(jié)構(gòu)中記錄的信息和索引入口等信息寫 入到IFC文件中。電子文檔模塊32將電子文檔中使用圖像處的描述替換為一個二元組,即, 相應(yīng)的圖像信息的引用和在索引處理模塊23中分配的索引號。如圖7所示,圖像處理模塊20還包括排序模塊21,該模塊對收集的圖像進行排序, 以使圖像按照分段的順序依次排列。然后,按照排序的順序為圖像處理模塊20和輸出模塊 30提供圖像數(shù)據(jù)和圖像信息。圖像處理模塊20還包括編碼模塊22。當在IFC文件的頭部信息中設(shè)置了壓縮單 位和壓縮方法時,編碼模塊根據(jù)從IFC文件模塊31接收的壓縮單位和壓縮方法對圖像數(shù)據(jù) 進行編碼。具體地講,當壓縮單位為圖像數(shù)據(jù)時,編碼模塊22采用指定的編碼方法對從排 序模塊21接收的圖像數(shù)據(jù)進行編碼,然后將經(jīng)過編碼的圖像數(shù)據(jù)輸出到IFC文件模塊31。 當壓縮單位為數(shù)據(jù)段時,編碼模塊22根據(jù)從索引處理模塊23接收的分段信息采用指定的 編碼方法對從排序模塊21接收的圖像數(shù)據(jù)進行分段編碼。這里,分段信息指示某一數(shù)據(jù)段 中包括哪些圖像數(shù)據(jù)及其數(shù)量等信息。當壓縮單位為不壓縮時,編碼模塊23采用指定的編 碼方法對整個IFC文件進行編碼。圖像處理模塊20還包括圖像信息模塊24,該模塊從從收集模塊10或排序模塊21接收的圖像信息中提取相同的圖像信息,并將這些相同的圖像信息記錄在一個圖像信息表 中。此時,電子文檔模塊32將電子文檔中使用當前圖像處的描述替換為圖像信息表的引用 和所分配的索引號?;蛘撸瑘D像信息模塊24根據(jù)電子文檔的描述方法在電子文檔中直接定 義這些相同的圖像信息。根據(jù)本發(fā)明的電子文檔的圖像數(shù)據(jù)處理裝置,查找單元從在IFC文件模塊31中創(chuàng) 建的IFC文件中讀取圖像數(shù)據(jù)以及相應(yīng)的索引信息,從在電子文檔模塊32中保存的電子文 檔讀取相應(yīng)的圖像信息,并在讀取的圖像數(shù)據(jù)已被編碼的情況下,對該圖像數(shù)據(jù)進行解碼; 修改單元對在IFC文件模塊31中創(chuàng)建的IFC文件中的圖像數(shù)據(jù)及其相應(yīng)的索引信息進行 修改;刪除單元刪除在IFC文件模塊31中創(chuàng)建的IFC文件中的圖像數(shù)據(jù)及其相應(yīng)的索引信 息;添加單元將新的圖像數(shù)據(jù)添加到在IFC文件模塊31中創(chuàng)建的IFC文件中并更新對應(yīng)的 索弓I fe息O以上描述了根據(jù)本發(fā)明的電子文檔的圖像數(shù)據(jù)處理方法及其裝置。通過本發(fā)明, 對大量零碎的圖像進行了集中的處理和存儲,使得訪問時的效率大大提高,并且使得當文 檔中使用這些小體積圖像時表述更為簡單,節(jié)省了描述的數(shù)據(jù)量。在文檔打開后,IFC文件 可以被直接打開、加載,在以后獲取其中的圖像數(shù)據(jù)時快速地、直接地從加載的IFC文件的 內(nèi)容中讀取,減少了 I/O操作數(shù)量。而多樣化的策略也為在IFC文件中定位圖像數(shù)據(jù)、圖像 數(shù)據(jù)緩存提供了更多靈活性、提高了性能。比如,采用就近策略時,讀取一個圖像文件時意 味著和其同段的圖像數(shù)據(jù)很有可能很快被使用,可以對這些圖像數(shù)據(jù)進行預(yù)取、緩存。如 果,在生成IFC文件時不對各圖像數(shù)據(jù)進行壓縮,而是對整個IFC文件進行壓縮,還可以進 一步提高圖像數(shù)據(jù)的壓縮率。盡管在以上實施例中描述了幾種電子文檔的圖像數(shù)據(jù)存儲、查找、修改、添加和刪 除方法,但是應(yīng)該理解,本發(fā)明的意圖在于從電子文檔中提取圖像的圖像信息和圖像數(shù)據(jù), 將圖像數(shù)據(jù)集中存儲在一個圖像數(shù)據(jù)包文件中,從而顯著降低內(nèi)存開銷,實現(xiàn)統(tǒng)一管理。本 發(fā)明不限于所描述的實施例,其它任何類似的變形或替換都應(yīng)包括在本發(fā)明中。比如,在將 電子文檔中使用當前圖像處的描述替換為一個二元組這個步驟中,實施例中的二元組是相 應(yīng)的圖像信息的引用和所分配的索引號。這里,索引號表示的是圖像數(shù)據(jù)在索引中的位置。 圖像數(shù)據(jù)在索引中的位置還可以用偏移等信息來表示。另外,二元組也可以是三元組、四元 組等等或者只是一元參數(shù),只要在其中定義了能夠使用的圖像信息和圖像數(shù)據(jù)即可。也就 是說,只要能夠從這些引用的描述中得到圖像信息和圖像數(shù)據(jù)即可,不管其組織方式如何。 索引結(jié)構(gòu)不限于實施例中所示的結(jié)構(gòu),還可以是各索引項分散在文件各處且通過指針、偏 移相連的結(jié)構(gòu)。此外,索引還可以與圖像數(shù)據(jù)分離,保存在單獨的文件中。本發(fā)明不限于僅 用于現(xiàn)有的PDF、XPS、CEB、MARS等文檔格式,還適用于與其類似地描述圖像信息和圖像數(shù) 據(jù)的文檔格式。
權(quán)利要求
一種電子文檔的圖像數(shù)據(jù)存儲方法,其特征在于,該方法包括以下步驟從電子文檔中收集圖像;建立圖像數(shù)據(jù)包文件和索引結(jié)構(gòu);和按照索引結(jié)構(gòu)將收集的圖像的圖像數(shù)據(jù)及其索引信息和索引入口寫入圖像數(shù)據(jù)包文件中,并將電子文檔中使用圖像處的描述替換為一個二元組,所述二元組為收集的圖像的圖像信息的引用和相應(yīng)的圖像數(shù)據(jù)在索引結(jié)構(gòu)中的位置。
2.根據(jù)權(quán)利要求1所述的電子文檔的圖像數(shù)據(jù)存儲方法,其特征在于,所述相應(yīng)的圖 像數(shù)據(jù)在索引結(jié)構(gòu)中的位置用在索引結(jié)構(gòu)中為該圖像數(shù)據(jù)分配的相應(yīng)的索引號表示。
3.根據(jù)權(quán)利要求2所述的電子文檔的圖像數(shù)據(jù)存儲方法,其特征在于,所述寫入圖像 數(shù)據(jù)包文件和替換電子文檔的步驟包括以下步驟從收集的當前圖像獲得該圖像的圖像信息和圖像數(shù)據(jù);為當前圖像分配索引號;將當前圖像的圖像數(shù)據(jù)寫入圖像數(shù)據(jù)包文件中與所分配的索引號對應(yīng)的數(shù)據(jù)區(qū)中;根據(jù)當前圖像的圖像數(shù)據(jù)更新索引結(jié)構(gòu)中與所分配的索引號對應(yīng)的索引;將電子文檔中使用當前圖像處的描述替換為一個二元組,所述二元組為相應(yīng)的圖像信 息的引用和所分配的索引號;判斷是否還有未處理完的圖像;如果還有未處理的圖像,則重復(fù)執(zhí)行從收集的當前圖像獲得該圖像的圖像信息和圖像 數(shù)據(jù)的步驟至將電子文檔中使用當前圖像處的描述替換為所述二元組的步驟;和如果收集的所有圖像都處理完畢,則將索引中記錄的信息和索引入口輸出到圖像數(shù)據(jù) 包文件中,并保存在其中所收集的圖像的描述被替換為所述二元組的電子文檔。
4.根據(jù)權(quán)利要求3所述的電子文檔的圖像數(shù)據(jù)存儲方法,其特征在于,在分配索引號 的步驟中,根據(jù)分段策略為當前圖像分配其所屬數(shù)據(jù)段中相應(yīng)的索引號。
5.根據(jù)權(quán)利要求4所述的電子文檔的圖像數(shù)據(jù)存儲方法,所述分段策略是指這樣的策 略,即,每個數(shù)據(jù)段包括相同數(shù)量或固定數(shù)據(jù)的圖像數(shù)據(jù),其余的圖像數(shù)據(jù)則歸入到最后一 個數(shù)據(jù)段中。
6.根據(jù)權(quán)利要求4所述的電子文檔的圖像數(shù)據(jù)存儲方法,所述分段策略是指這樣的策 略,g卩,將一起使用的圖像數(shù)據(jù)歸入到同一數(shù)據(jù)段中。
7.根據(jù)權(quán)利要求4所述的電子文檔的圖像數(shù)據(jù)存儲方法,所述分段策略是指這樣的策 略,即,按照圖像的寬、高、分辨率或數(shù)據(jù)量大小來分段。
8.根據(jù)權(quán)利要求3所述的電子文檔的圖像數(shù)據(jù)存儲方法,其特征在于,在從收集的當 前圖像獲得該圖像的圖像信息和圖像數(shù)據(jù)的步驟中,如果獲得的圖像數(shù)據(jù)是已經(jīng)壓縮過的 圖像數(shù)據(jù),則根據(jù)所述電子文檔中的壓縮參數(shù)對這些圖像數(shù)據(jù)進行解壓縮,將其還原成DIB 格式的圖像數(shù)據(jù)。
9.根據(jù)權(quán)利要求1所述的電子文檔的圖像數(shù)據(jù)存儲方法,其特征在于,所述圖像數(shù)據(jù) 包文件至少包括文件頭部信息、存儲圖像數(shù)據(jù)的數(shù)據(jù)區(qū)、索引、索引入口,文件頭部信息一 定位于圖像數(shù)據(jù)包文件的開頭,索引入口一定位于圖像數(shù)據(jù)包文件的末尾,文件頭部信息 中至少記錄壓縮單位和壓縮方法,索引入口指示索引結(jié)構(gòu)在圖像數(shù)據(jù)包文件中的偏移位 置,索引中至少記錄各個圖像數(shù)據(jù)在圖像數(shù)據(jù)包文件中的偏移位置和該圖像數(shù)據(jù)的長度。
10.根據(jù)權(quán)利要求9所述的電子文檔的圖像數(shù)據(jù)存儲方法,其特征在于,該方法還包括 對圖像數(shù)據(jù)進行編碼的步驟,其中,當文件頭部信息中設(shè)置的壓縮單位為圖像數(shù)據(jù)時,在獲取每個圖像數(shù)據(jù)之后,采用文 件頭部信息中指定的壓縮方法對各個圖像數(shù)據(jù)分別進行壓縮,然后采用指定的加密方法對 壓縮的圖像數(shù)據(jù)進行加密;當文件頭部信息中設(shè)置的壓縮單位為數(shù)據(jù)段時,在獲取每個數(shù)據(jù)段之后,采用文件頭 部信息中指定的壓縮方法對各個數(shù)據(jù)段分別進行壓縮,然后采用指定的加密方法對壓縮的 數(shù)據(jù)段進行加密;當文件頭部信息中設(shè)置的壓縮單位為不壓縮時,在生成所述圖像數(shù)據(jù)包文件之后,采 用默認的壓縮方法對整個圖像數(shù)據(jù)包文件進行壓縮,然后采用指定的加密方法對壓縮的圖 像數(shù)據(jù)包文件進行加密。
11.根據(jù)權(quán)利要求3所述的電子文檔的圖像數(shù)據(jù)存儲方法,其特征在于,該方法還包括 在從收集的圖像獲得圖像信息之后將多個圖像的相同的圖像信息寫入到圖像信息表中的 步驟,同時,將電子文檔中使用當前圖像處的描述替換為圖像信息表的引用和所分配的索 引號。
12.根據(jù)權(quán)利要求11所述的電子文檔的圖像數(shù)據(jù)存儲方法,其特征在于,將所述圖像 信息表保存在所述圖像數(shù)據(jù)包文件中,在所述圖像數(shù)據(jù)包文件的頭部信息中記錄該圖像信 息表在該圖像數(shù)據(jù)包文件中的位置。
13.根據(jù)權(quán)利要求11所述的電子文檔的圖像數(shù)據(jù)存儲方法,其特征在于,將所述圖像 信息表作為單獨的文件保存在所述電子文檔中。
14.根據(jù)權(quán)利要求3所述的電子文檔的圖像數(shù)據(jù)存儲方法,其特征在于,該方法還包括 在從收集的圖像獲得圖像信息之后根據(jù)所述電子文檔的描述方式在該電子文檔中定義多 個圖像的相同的圖像信息的步驟。
15.根據(jù)權(quán)利要求1所述的電子文檔的圖像數(shù)據(jù)存儲方法,其特征在于,該方法還包括 在從電子文檔中收集圖像之后對收集的圖像進行排序的步驟。
16.根據(jù)權(quán)利要求15所述的電子文檔的圖像數(shù)據(jù)存儲方法,其特征在于,在排序的步 驟中,排序的順序包括圖像被使用的順序、圖像體積大小的順序、解析度順序、圖像寬度順 序、圖像高度順序、圖像信息(比如,顏色空間、圖像類型)順序或者圖像名稱順序。
17.根據(jù)權(quán)利要求15所述的電子文檔的圖像數(shù)據(jù)存儲方法,其特征在于,所述相應(yīng)的 圖像數(shù)據(jù)在索引結(jié)構(gòu)中的位置用在索引結(jié)構(gòu)中為該圖像數(shù)據(jù)分配的相應(yīng)的索引號表示,并 且,在按照排序的順序?qū)D像數(shù)據(jù)分段的情況下,所述寫入圖像數(shù)據(jù)包文件和替換電子文 檔的步驟包括以下步驟從收集的當前圖像獲得該圖像的圖像信息和圖像數(shù)據(jù);按照排序的順序依次為當前圖像分配索引號;將當前圖像的圖像數(shù)據(jù)寫入圖像數(shù)據(jù)包文件中與所分配的索引號對應(yīng)的數(shù)據(jù)段中;根據(jù)當前圖像的圖像數(shù)據(jù)更新索引結(jié)構(gòu)中與所分配的索引號對應(yīng)的索引;將電子文檔中使用當前圖像處的描述替換為一個二元組,所述二元組為相應(yīng)的圖像信 息的引用和所分配的索引號;判斷當前段是否處理完畢;如果當前段沒有處理完畢,則重復(fù)執(zhí)行從收集的當前圖像獲得該圖像的圖像信息和圖 像數(shù)據(jù)的步驟至將電子文檔中使用當前圖像處的描述替換為所述二元組的步驟;如果當前段處理完畢,則將索引中記錄的當前段的信息寫入到圖像數(shù)據(jù)包文件中; 判斷是否還有未處理的數(shù)據(jù)段;如果還有未處理的數(shù)據(jù)段,則重復(fù)執(zhí)行從收集的當前圖像獲得該圖像的圖像信息和圖 像數(shù)據(jù)的步驟至將索引中記錄的當前段的信息寫入到圖像數(shù)據(jù)包文件中的步驟;和如果所有的數(shù)據(jù)段都處理完畢,則將索引入口寫入到圖像數(shù)據(jù)包文件中,并保存被替 換的電子文檔。
18.根據(jù)權(quán)利要求1至17中的任何一個所述的電子文檔的圖像數(shù)據(jù)存儲方法,其特征 在于,所述索引結(jié)構(gòu)為二級索引結(jié)構(gòu),該二級索引結(jié)構(gòu)包括主索引和段索引,主索引中至少 記錄段索引數(shù)量、段索引在圖像數(shù)據(jù)包文件中的偏移位置和該段中包括的圖像數(shù)據(jù)的數(shù)量 等信息,段索引中至少記錄段索引對應(yīng)的數(shù)據(jù)段在圖像數(shù)據(jù)包文件中的偏移位置、當前索 引對應(yīng)的圖像數(shù)據(jù)在該數(shù)據(jù)段中的偏移位置、圖像數(shù)據(jù)長度等信息。
19.一種查找根據(jù)權(quán)利要求1至17中的任何一個所述的圖像數(shù)據(jù)存儲方法存儲的圖像 數(shù)據(jù)的方法,其特征在于,該方法包括以下步驟根據(jù)提供的所要查找的圖像數(shù)據(jù)在索引結(jié)構(gòu)中的位置從如上保存的電子文檔中獲得 所引用的圖像信息;打開圖像數(shù)據(jù)包文件,并從圖像數(shù)據(jù)包文件獲取索引入口 ; 根據(jù)索引入口查找與所提供的位置對應(yīng)的索引,并提取該索引中記錄的信息; 根據(jù)所提供的位置和提取的索引信息確定所要查找的圖像數(shù)據(jù)在圖像數(shù)據(jù)包文件中 的位置和長度,并讀取該圖像數(shù)據(jù);和將獲得的圖像信息和圖像數(shù)據(jù)返回給用戶或者緩存。
20.根據(jù)權(quán)利要求19所述的查找圖像數(shù)據(jù)的方法,其特征在于,在圖像數(shù)據(jù)包文件中 包括文件頭部信息的情況下,在打開圖像數(shù)據(jù)包文件時從圖像數(shù)據(jù)包文件中獲取其頭部信 息和索引入口,并且,所述方法還包括對圖像數(shù)據(jù)進行解碼的步驟,其中,當在圖像數(shù)據(jù)包文件的頭部信息中設(shè)置了壓縮單位和壓縮方法時,在壓縮單位 為不壓縮時,在打開圖像數(shù)據(jù)包文件時根據(jù)頭部信息中設(shè)置的壓縮方法對整個圖像數(shù)據(jù)包 文件進行解碼;在壓縮單位為圖像數(shù)據(jù)時,在讀取圖像數(shù)據(jù)之后根據(jù)頭部信息中設(shè)置的壓 縮方法對該圖像數(shù)據(jù)進行解碼;在壓縮單位為數(shù)據(jù)段時,在根據(jù)索引號和提取的索引信息 確定索引號所在數(shù)據(jù)段在圖像數(shù)據(jù)包文件中的位置和長度,并讀取該數(shù)據(jù)段,然后根據(jù)頭 部信息中設(shè)置的壓縮方法對該數(shù)據(jù)段進行解碼。
21.根據(jù)權(quán)利要求19所述的查找圖像數(shù)據(jù)的方法,其特征在于,當將相同的圖像信息 記錄在圖像信息表中時,通過引用的圖像信息表獲取對應(yīng)的圖像信息。
22.根據(jù)權(quán)利要求19所述的查找圖像數(shù)據(jù)的方法,其特征在于,在根據(jù)分段策略將圖 像數(shù)據(jù)分段的情況下,根據(jù)所提供的位置和提取的索引信息確定所要查找的圖像數(shù)據(jù)所在 數(shù)據(jù)段在圖像數(shù)據(jù)包文件中的位置和長度,讀取該數(shù)據(jù)段中的所有圖像數(shù)據(jù)并將其緩存, 再次查找該數(shù)據(jù)段中的圖像數(shù)據(jù)時,執(zhí)行以下步驟檢查在內(nèi)存是否存在緩存的數(shù)據(jù)段;如果在內(nèi)存中不存在緩存的數(shù)據(jù)段,則執(zhí)行根據(jù)權(quán)利要求19所述的正常查找過程;如果在內(nèi)存中存在緩存的數(shù)據(jù)段,則判斷所要查找的圖像數(shù)據(jù)所在數(shù)據(jù)段是否為緩存 的數(shù)據(jù)段;如果所要查找的數(shù)據(jù)段不是緩存的數(shù)據(jù)段,則執(zhí)行根據(jù)權(quán)利要求19所述的正常查找 過程;如果所要查找的數(shù)據(jù)段是緩存的數(shù)據(jù)段,則直接讀取緩存的數(shù)據(jù)段中的圖像數(shù)據(jù)。
23.—種修改根據(jù)權(quán)利要求1至17中的任何一個所述的圖像存儲方法存儲的圖像數(shù)據(jù) 的方法,其特征在于,該方法包括以下步驟判斷修改后的數(shù)據(jù)長度是否長于修改前的數(shù)據(jù)長度;如果修改后的數(shù)據(jù)長度不長于修改前的數(shù)據(jù)長度,則直接在圖像數(shù)據(jù)包文件中原始的 圖像數(shù)據(jù)處進行替換,并根據(jù)修改后的圖像數(shù)據(jù)更新對應(yīng)的索引信息;和如果修改后的數(shù)據(jù)長度長于修改前的數(shù)據(jù)長度,則在圖像數(shù)據(jù)包文件末尾寫入修改后 的圖像數(shù)據(jù),根據(jù)該圖像數(shù)據(jù)更新對應(yīng)的索引信息,并在圖像數(shù)據(jù)包文件末尾寫入更新的 索引信息和索引入口。
24.一種修改根據(jù)權(quán)利要求1至17中的任何一個所述的圖像存儲方法存儲的圖像數(shù)據(jù) 的方法,其特征在于,該方法包括以下步驟在圖像數(shù)據(jù)包文件末尾寫入修改后的圖像數(shù)據(jù);根據(jù)所述圖像數(shù)據(jù)更新對應(yīng)的索引信 息;和在圖像數(shù)據(jù)包文件末尾寫入更新的索引信息和索引入口。
25.一種刪除根據(jù)權(quán)利要求1至17中的任何一個所述的圖像存儲方法存儲的圖像數(shù)據(jù) 的方法,其特征在于,該方法包括以下步驟將與所要修改的圖像數(shù)據(jù)對應(yīng)的索引中的記錄用一條空記錄替換;和直接將所要刪除的圖像數(shù)據(jù)用0替換。
26.一種刪除根據(jù)權(quán)利要求1至17中的任何一個所述的圖像存儲方法存儲的圖像數(shù)據(jù) 的方法,其特征在于,該方法包括以下步驟將與所要修改的圖像數(shù)據(jù)對應(yīng)的索引中的記錄用一條空記錄替換;和在圖像數(shù)據(jù)包文件末尾重新寫入更新的索引信息和索引入口。
27.一種添加根據(jù)權(quán)利要求1至17中的任何一個所述的圖像存儲方法存儲的圖像數(shù)據(jù) 的方法,其特征在于,該方法包括以下步驟在圖像數(shù)據(jù)包文件末尾添加新的圖像數(shù)據(jù),并為該圖像數(shù)據(jù)分配其在索引結(jié)構(gòu)中的位置;根據(jù)所述圖像數(shù)據(jù)更新對應(yīng)的索引信息;和在圖像數(shù)據(jù)包文件末尾寫入更新的索引信息和索引入口。
28.一種添加根據(jù)權(quán)利要求4至7中的任何一個所述的圖像存儲方法存儲的圖像數(shù)據(jù) 的方法,其特征在于,該方法包括以下步驟判斷與所要添加的圖像數(shù)據(jù)共同使用的其它圖像數(shù)據(jù)所在的數(shù)據(jù)段是否已滿;如果所述數(shù)據(jù)段沒有滿,則將所述圖像數(shù)據(jù)添加到該數(shù)據(jù)段中,并分配該數(shù)據(jù)段中相 應(yīng)的索引號;如果所述數(shù)據(jù)段已滿,則建立一個新的數(shù)據(jù)段,寫入所述圖像數(shù)據(jù),并分配該數(shù)據(jù)段中 相應(yīng)的索引號;根據(jù)所述圖像數(shù)據(jù)更新對應(yīng)的索引信息;和將更新的索引信息和索引入口寫入圖像數(shù)據(jù)包文件末尾。
29.一種電子文檔的圖像數(shù)據(jù)處理裝置,包括存儲單元,其特征在于,該存儲單元包括收集模塊,從電子文檔收集要處理的圖像;索引處理模塊,在內(nèi)存中建立索引結(jié)構(gòu),為收集的圖像分配索引號,并根據(jù)該圖像的圖 像數(shù)據(jù)更新與索引號對應(yīng)的索引;圖像數(shù)據(jù)包文件模塊,寫入圖像數(shù)據(jù)包文件的頭部信息,將從收集模塊接收的圖像數(shù) 據(jù)寫入圖像數(shù)據(jù)包文件中與在索引處理模塊中分配的索引號對應(yīng)的數(shù)據(jù)區(qū)中,并將在索引 處理模塊中建立的索引結(jié)構(gòu)中記錄的信息和索引入口等信息寫入到圖像數(shù)據(jù)包文件中;和電子文檔模塊,將電子文檔中使用圖像處的描述替換為一個二元組,即,相應(yīng)的圖像信 息的引用和在索引處理模塊中分配的索引號。
30.根據(jù)權(quán)利要求29所述的電子文檔的圖像數(shù)據(jù)處理裝置,其特征在于,所述存儲單 元還包括排序模塊,該模塊對收集的圖像進行排序,以使圖像按照分段的順序依次排列。
31.根據(jù)權(quán)利要求29所述的電子文檔的圖像數(shù)據(jù)處理裝置,其特征在于,所述存儲單 元還包括編碼模塊,在圖像數(shù)據(jù)包文件的頭部信息中設(shè)置了壓縮單位和壓縮方法的情況 下,當壓縮單位為圖像數(shù)據(jù)時,編碼模塊采用指定的壓縮方法對從收集模塊接收的圖像數(shù) 據(jù)進行編碼,然后將經(jīng)過編碼的圖像數(shù)據(jù)輸出到圖像數(shù)據(jù)包文件模塊;當壓縮單位為數(shù)據(jù) 段時,編碼模塊根據(jù)從索引處理模塊接收的分段信息采用指定的壓縮方法對從收集模塊接 收的圖像數(shù)據(jù)進行分段編碼,然后將經(jīng)過編碼的數(shù)據(jù)段輸出到圖像數(shù)據(jù)包文件模塊;當壓 縮單位為不壓縮時,編碼模塊采用指定的編碼方法對整個圖像數(shù)據(jù)包文件進行編碼,然后 將經(jīng)過編碼的圖像數(shù)據(jù)包文件輸出到圖像數(shù)據(jù)包文件模塊。
32.根據(jù)權(quán)利要求29所述的電子文檔的圖像數(shù)據(jù)處理裝置,其特征在于,所述存儲單 元還包括圖像信息模塊,該模塊從通過收集模塊接收的圖像信息中提取出相同的圖像信 息,并將這些相同的圖像信息記錄在一個圖像信息表中,同時,電子文檔模塊將電子文檔中 使用當前圖像處的描述替換為圖像信息表的引用和所分配的索引號。
33.根據(jù)權(quán)利要求29所述的電子文檔的圖像數(shù)據(jù)處理裝置,其特征在于,所述存儲單 元還包括圖像信息模塊,該模塊根據(jù)所述電子文檔的描述方法在所述電子文檔中直接定義 相同的圖像信息。
34.根據(jù)權(quán)利要求29所述的電子文檔的圖像數(shù)據(jù)處理裝置,其特征在于,所述圖像數(shù) 據(jù)處理裝置還包括查找單元,該單元從在圖像數(shù)據(jù)包文件模塊中創(chuàng)建的圖像數(shù)據(jù)包文件中 讀取圖像數(shù)據(jù)以及相應(yīng)的索引信息,從在電子文檔模塊中保存的電子文檔讀取相應(yīng)的圖像 信息,并在讀取的圖像數(shù)據(jù)已被編碼的情況下,對該圖像數(shù)據(jù)進行解碼。
35.根據(jù)權(quán)利要求29所述的電子文檔的圖像數(shù)據(jù)處理裝置,其特征在于,所述圖像數(shù) 據(jù)處理裝置還包括修改單元,該單元對在圖像數(shù)據(jù)包文件模塊中創(chuàng)建的圖像數(shù)據(jù)包文件中 的圖像數(shù)據(jù)及其相應(yīng)的索引信息進行修改。
36.根據(jù)權(quán)利要求29所述的電子文檔的圖像數(shù)據(jù)處理裝置,其特征在于,所述圖像數(shù) 據(jù)處理裝置還包括刪除單元,該單元刪除在圖像數(shù)據(jù)包文件模塊中創(chuàng)建的圖像數(shù)據(jù)包文件 中的圖像數(shù)據(jù)及其相應(yīng)的索引信息。
37.根據(jù)權(quán)利要求29所述的電子文檔的圖像數(shù)據(jù)處理裝置,其特征在于,所述圖像數(shù) 據(jù)處理裝置還包括添加單元,該單元將新的圖像數(shù)據(jù)添加到在圖像數(shù)據(jù)包文件模塊中創(chuàng)建 的圖像數(shù)據(jù)包文件中并更新對應(yīng)的索引信息。
全文摘要
本發(fā)明提供了一種電子文檔的圖像數(shù)據(jù)處理方法及其裝置,包括圖像數(shù)據(jù)的存儲、查找、修改、刪除和添加方法。圖像數(shù)據(jù)存儲方法包括從在電子文檔中收集的圖像獲得其圖像信息和圖像數(shù)據(jù);分配索引號;將圖像數(shù)據(jù)寫入IFC文件中對應(yīng)的數(shù)據(jù)區(qū)中;根據(jù)圖像數(shù)據(jù)更新對應(yīng)的索引信息;將電子文檔中使用圖像處的描述替換為相應(yīng)的圖像信息的引用和索引號。圖像數(shù)據(jù)的查找、修改、刪除和添加方法通過索引結(jié)構(gòu)對IFC文件中的圖像數(shù)據(jù)進行操作。本發(fā)明將分布在電子文檔中的圖像數(shù)據(jù)集中存儲在IFC文件中,并根據(jù)不同的分段策略對這些圖像數(shù)據(jù)進行有意義的分段,從而顯著地降低了存儲開銷,提高了訪問效率。
文檔編號G06F17/30GK101894115SQ20091015190
公開日2010年11月24日 申請日期2009年7月2日 優(yōu)先權(quán)日2009年5月18日
發(fā)明者仇睿恒, 王毅 申請人:北京大學;北大方正集團有限公司;北京北大方正技術(shù)研究院有限公司