專利名稱:捕獲圖像數據的制作方法
技術領域:
本發明涉及用于捕獲圖像數據的方法和系統。
背景技術:
微軟Windows提供了一種功能,當用戶在鍵盤上按下"Print Screen (打印屏幕)"時,允許用戶捕獲其屏幕的內容(該內容被復 制到虛擬"剪貼板")。其他操作系統提供了類似的功能。還存在 可用的多種軟件應用,其提供這種功能的更高級形式。這些應用有 時擴展屏幕捕獲的能力,用以包括選擇待捕獲的指定窗口 ,或者允 許在保存或者輸出圖像之前編輯捕獲的圖像。
當用戶正在觀看的顯示器設備上存在多個組分(諸如重疊窗口) 時,典型的屏幕捕獲應用將在屏幕捕獲功能期間丟失隱含信息(即, 下層窗口上的信息),除非特別地將各組分提取到獨立的圖像文件 中。例如,Softworx公司發行的Capture Professional允許用戶選擇 顯示區域內的多個組分。這些組分例如可以是兩個重疊窗口。在這 種情況下,軟件繼而給出用戶以下選擇創建兩個獨立的圖像,這 將丟失屏幕的真實外觀;或者創建如兩個窗口目前所顯示那樣的單 個圖像,在這種情況下被部分遮蓋的窗口上的數據將丟失。
發明內容
根據本發明的第 一 方面,提供了 一種捕獲圖像數據的方法,包括 接收定義顯示區域的信號,其中該顯示區域的圖像數據將被捕獲; 訪問與所定義的顯示區域內的組分相關的元數據;以及,針對所定
義的顯示區域內的組分,存儲該組分的圖像并存儲相關聯的位置數據。根據本發明的第二方面,提供了一種用于捕獲圖像數據的系統,
該系統包括顯示器設備,其被布置為顯示圖像數據;用戶接口, 其被布置為響應于已定義的用戶輸入而生成定義顯示區域的信號, 其中該顯示區域的圖像數據將被捕獲;以及處理器,其被布置為訪 問與所定義的顯示區域內的組分相關的元數據,以及,針對所定義 的顯示區域內的組分,存儲該組分的圖像并存儲相關聯的位置數據。 根據本發明的第三方面,提供了 一種計算機可讀介質上的計算機 程序產品,其包括用于捕獲圖像數據的指令集合,該集合包括用 于接收定義顯示區域的指令,其中該顯示區域的圖像數據將被捕獲; 用于訪問與所定義的顯示區域內的組分相關的元數據;以及用于針
對所定義的顯示區域內的組分而存儲該組分的圖像并存儲相關聯的 位置數據的指令。
基于本發明,可以實現對多個顯示組分(例如,窗口)的自動屏 幕捕獲,而不會丟失任何隱含信息并同時維持顯示區域的可視外觀。 這可以包括捕獲屏幕上所示的所有組分,盡管用戶可以僅選擇那些 所顯示組分的子集。本發明的屏幕捕獲方法隱含地或者明確地捕獲 在該處理中捕獲的所顯示組分之間的位置關系。
在優選實施方式中,針對顯示區域內的每個組分和所有組分,執 行存儲組分的圖像以及存儲關聯位置數據的步驟。可替換地,針對 顯示區域內的用戶選定組分來執行存儲組分的圖像以及存儲關聯位 置數據的步驟。該處理足夠靈活,支持對所有顯示組分的捕獲或者 對用戶選定的待存儲組分的捕獲。在大多數情況下,用戶將執行簡 單動作,諸如像傳統的那樣按下其鍵盤上的按鈕來啟動屏幕捕獲。 可以使用更復雜的接口,其允許用戶定義正在捕獲的顯示區域。顯 示區域可以是用戶面前的顯示器設備的一部分,或者可以大于他們 正在觀看的屏幕,例如,當多顯示器設備的使用變得更為普遍時, 顯示區域可以包含多個顯示器設備的顯示內容。
有利地,組分圖像和關聯位置數據存儲在單個文件中。每個圖像 作為單個文件中的層而存儲。在用戶選擇所顯示的所有內容的捕獲
時,根據桌面上的所有組分來創建分層格式的單個圖像,其包括作 為層的桌面本身。這意味著在單個結果文件中隱含地捕獲了窗口之
間的關系,分層(x在y之上)和定位(x在y左側3個像素并且比 y高2 5個像素)作為位置數據隨同捕獲的組分圖像而存儲。
可替換地,組分圖像存儲在各自的文件中并且位置數據存儲在控 制文件中,該控制文件包括各個組分圖像文件的細節。捕獲方法的 該實施方式將每個所捕獲組分的圖像存儲在獨立的圖像文件中,諸 如jpeg文件。除了各個組分的文件,還創建控制文件,其包含將組 分圖像文件聯系在一起的位置數據。這例如可以存儲在簡單XML格 式的文件中。
下面將參考附圖僅以示例的方式對本發明的實施方式進行描述, 其中
圖1是計算系統的示意圖,
圖2是捕獲圖像數據的方法的流程圖。
圖3是包括多個圖像層的圖像文件的示意圖,以及
圖4是捕獲圖像數據的可替換方法的流程圖。
具體實施例方式
圖1示出了計算系統10,其可以用于捕獲圖像數據。系統10包 括顯示器設備12,其可以是適于顯示圖像數據的任何顯示設備; 用戶接口設備,其是鍵盤14和鼠標16;以及處理器18。處理器18 接收來自鍵盤14和鼠標16的輸入,并且控制顯示器12上的圖像, 這是本領域的常規技術。
在圖1的示例中,顯示器設備12被示為顯示了三個層疊窗口 A、 B以及C。為了容易理解,用較大的單字來示出這些窗口 ,但是在系 統IO的實際實施方式中,顯示器設備12所顯示的每個窗口將承載 詳細的信息,例如,照片的圖像文件、或者文字處理文檔、或者因
特網瀏覽器。
以類似的方式,在三個窗口后面,用戶的桌面是可見的,可以{人 為其是與顯示器設備12的顯示面積相同大小的窗口 。桌面在三個窗 口 A、 B以及C后面,并且為了容易理解而被示為點區域。兩個窗 口 A和B每個的一定量的顯示區域被其他窗口遮蔽。
當用戶期望捕獲顯示器設備12所顯示的圖像時,處理器18被布 置為響應于已定義的用戶輸入而生成定義顯示區域的信號,其中該 顯示區域的圖像數據將被捕獲。在最簡單方案中,用戶按下鍵盤14 上的"打印屏幕"按鈕,其作為所述已定義的用戶輸入,并且設備 12的整個顯示區域被捕獲。更復雜的布置是可能的僅捕獲顯示器 設備12上的一些組分。
一旦處理器18已經經由鍵盤14接收了來自用戶的捕獲圖像數據 的信號,則處理器18將訪問與正在捕獲的所定義顯示區域內的不同 組分相關的元數據。在圖l的示例中,如果用戶正在捕獲整個顯示, 則處理器18需要捕獲四個組分;三個窗口A、 B以及C,以及背景 桌面。
處理器18能夠經由操作系統可編程地訪問顯示窗口 。使用針對特 定操作系統的適合的編程API接口 ,其允許應用與其他窗口交互。處理 器18運行這種應用,其允許處理器訪問設備12所顯示組分的有關信息 (元數據)。
例如,在Visual Basic編程語言中,存在用于與微軟Microsoft交互 的API,其包括獲得針對操作系統已知的所有窗口的句柄陣列的能力。 利用窗口的句柄,處理器18 (其執行調用API的適當應用)可以獲得 關于任何指定窗口的各種信息。
可以訪問的元數據包括諸如窗口標題(顯示在標題欄上的文本)、 窗口尺寸(以像素為單位的寬和高)、窗口是否可見(最小化)、窗口 的z深度(允許應用按照顯示器概念上的從"前"到"后"來標識窗口 的順序)、窗口的位置(通過左上角的x和y坐標給出)、以及選定窗 口的外觀的位像等信息。通過此API,處理器18還可以與每個窗
口可編程地交互,從而能夠最小化(即,隱藏)以及恢復(即,顯示) 指定窗口。
顯示器設備12所顯示的圖像所包含的不同組分(諸如各窗口和桌 面背景)均具有相關聯的元數據(諸如上文列出的信息),其包括諸如 組分的位置和大小的信息。
圖2示出了當處理器18執行此屏幕捕獲功能時所執行的方法的第 一實施方式。在步驟210,用戶通過請求進行屏幕捕獲來開始處理。在 步驟212,響應于接收針對捕獲的請求,處理器18訪問與顯示所包含的 組分相關的元數據。如上所述,這可以經由適合的API,其可以查詢在 該特定時刻存在的、操作系統所保持的關于特定窗口的數據。在同一步 驟中,可以查詢操作系統,以獲得關于用戶桌面(背景)的信息。
在屏幕捕獲方法的第一實施方式中,處理器18將顯示的各組分捕 獲到單個文件中。針對顯示區域內的組分,組分的圖像和相關聯的位置 數據存儲在此單個文件中。可以實現其的一種方式是通過使用支持層的 圖像格式,其中每個組分圖像文件作為獨立的層來存儲。在步驟214, 處理器18將創建使用分層的單個圖像文件。
處理器18使用支持包含多個層的圖像的圖像文件格式。多個專用 和開源的文件格式包括這種功能,諸如.psd文件(來自Adobe的 Photoshop ) 、 .psp文件(由來自Corel的Paint Shop Pro所支持)以及.xcf 文件(由GIMP支持,開源)。所有這些圖像格式支持多種方式來操縱 層,諸如能夠選擇性地、獨立于任何其他層地來移動層,以及通常在 根據調色板視圖來查看圖像時隱藏一個或多個層,其中調色板將每個層 顯示為獨立的縮略圖,該縮略圖可以在顯示/隱藏之間切換。所有這些 格式都支持層的透明性,這確保層中未繪出的部分不會遮蔽下面層上的 圖像。
在步驟216,處理器18存儲第一組分的圖像,其是桌面圖像。處理 器18繼而循環執行步驟218到220,將所定義的顯示區域內的其他組分 保存為圖像文件內獨立的層。 一旦所有組分已經作為獨立的圖像文件而 被捕獲,方法在步驟222結束。與各個圖像相關聯的位置數據頁存儲在
該單個文件中。該數據可以是簡單的圖像層的次序,其有效地給出文件 沖各個組分的從前至后位置,或者該數據可以是更詳細的信息,諸如每
個組分的實際x和y坐標(其由處理器18從操作系統所存儲的元數據 中獲取)。
圖3示出了圖1的四個組分,將在支持層的單個圖像文件中捕獲這 些組分。四個層20均是獨立捕獲的,其順序為從后到前,其中層20a 是用戶的桌面(包含應用和快捷方式等的圖標),層20b至20d均是獨 立的組分窗口 ,其中針對窗口的所有圖像數據被捕獲在文件中并且被保 存為層20。四個層20被示為形成方形,但是這僅是為了簡化解釋;在 實際中,層20將按照z深度順序來存儲,z深度構成存儲在單個文件中 的關于每個層20的位置信息。
全部獨立組分(包括桌面)的圖像已經記錄在了該分層的圖像文件 中。當在適合的應用中觀看此圖像文件時,將看到原始的屏幕圖像,其 與用戶按下按鈕從而觸發屏幕捕獲處理時一樣,但是被其他窗口遮蔽的 桌面和窗口部分中的所有信息也存在于此單個文件中,并且文件的^C看
者可以通過操縱文件內的層來訪問各個組分的圖像。
例如,如果文件的觀看者期望查看整個窗口 "A,,,則其可以將該 層帶到前面,或者其可以刪除或者隱藏其期望訪問的特定層前面的層。 已經執行了智能屏幕捕獲,其不僅限于允許用戶訪問原始屏幕圖像,還 可以捕獲并且隨后訪問被遮蔽的數據。
在圖1至圖3的示例中,捕獲在單個文件中的被遮蔽數據包括所顯 示組分的那些被其他組分遮蔽的元素。其它類型的被遮蔽數據也可以通 過本發明的屏幕捕獲方法來存儲。例如,如果窗口被這樣定位其內容 的一部分在顯示設備12的"外邊",則仍然將捕獲整個窗口,并且對 存儲不同組分的最終文件進行操縱的用戶將能夠訪問在設備12的原始 屏幕顯示上未示出的數據。
類似地,如果任何組分(諸如窗口 )按照需要使用滾動條的方式來 顯示、,從而使得窗口當前沒有顯示全部窗口數據時,則當捕獲各個組 分窗口時,處理器18還可以捕獲此窗口中的未見部分。這可以通過4吏
用API來實現,其將允許滾動任何獨立窗口的內容或者對窗口進行擴 展,從而捕獲該窗口的所有數據。為了支持該功能,支持分層的一些通
用文件格式將需要修改,但是該功能例如可以在下文參考圖4討論的本
發明的第二實施方式中實現。
同樣地,如果任何窗口當前是打開的但卻被最小化,從而使得僅在
任務欄(在Windows中)上顯示其標題,則當執行屏幕捕獲方法時, 處理器也可以在所有最小化的窗口之間循環,并將其布置為被最大化、 被捕獲、繼而再次被最小化。此處理的最終結果將是當在適合的閱覽 器中打開時,包含層的圖像文件看起來仍然像是顯示器設備12上的原 始屏幕顯示一樣,但是在桌面上看到的最小化組分將被捕獲到文件中作 為獨立的層,其能夠被最終用戶觀看。
如果用戶使用公知為虛擬桌面的系統中的多個顯示設備,則當用戶 執行屏幕捕獲功能時,其可以捕獲其當前正在使用的所有顯示設備上的 所有信息。處理器18在接收定義顯示區域的信號(該顯示區域的圖像 數據將被捕獲)之后開始屏幕捕獲。因此顯示區域可以是多個顯示設備 中的區域。
處理器訪問」燥作系統,并且獲取多個桌面和目前正在使用的所有窗 口所有信息。繼而按照相對位置信息依次捕獲這些桌面和窗口,并且將 其存儲在單個文件中。當用戶打開所得文件時,他們將看到對應于用戶
的主顯示器上圖像的圖像,但是將存在滾動條,其允許用戶查看虛擬桌 面的其他部分。實際上,創建的文件具有虛擬桌面大小的圖像。各個窗 口將作為層而存在并且可以被獨立訪問,而不丟失遮蔽的數據。
類似地,如果用戶具有虛擬三維(3D)桌面,則維持此圖像和虛擬 3D環境中的組分內的邏輯關系。通過平面觀看設備,利用桌面空間中 的對象的朝向和z軸定位的概念(窗口可能不是恰好在另一窗口后面, 而是可能在其后"x個單位,,,或者可以傾斜地觀看,或者甚至概念上 移動到后面或者用戶一側),通常可以將3D桌面視為傳統的2D桌面。 代替捕獲可觀看區域,當用戶通過按下小鍵盤上的按鈕來啟動屏幕捕獲 功能時,將捕獲概念3D空間整體(或者通過一些選擇機制來選擇性捕
獲)。Sun的實馬全3D桌面http:〃www.sun.com/software/Iooking_glass/ 和可行的SD文件才各式http:〃www.web3d.org/x3d/overview.html,給出 關于3D桌面的進一步信息。
執行屏幕捕獲方法的可替換實施方式。同第一實施方式中一樣(圖2), 在接收到啟動屏幕捕獲的信號時,處理器18訪問操作系統,以獲取當 前存在的窗口的細節。這將是窗口列表以及關于那些組分的元數據,這 些元數據包括窗口的圖像、窗口位置、窗口是否被最小化等。
第二方法與第一實施方式的區別在于組分的圖像不是保存在單個 文件中。在此實施方式中,組分圖像存儲在獨立文件中并且位置數據存 儲在控制文件中,該控制文件包括組分圖像文件的細節。在步驟414, 控制文件被創建為XML文件。
在步驟416,將顯示的第一組分存儲為諸如.jpg的傳統文件格式的 獨立圖像文件,其中與該圖像相關的信息存儲在控制文件中。繼而針對 正在捕獲的每個組分重復步驟418和步驟420,并且當所有這種組分已 經被存儲時,該方法在步驟422結束。捕荻方法的第二實施方式的最終 結果是一組圖像文件以及包括位置信息的XML控制文件,該位置信息 可以用來根據各個圖像文件(每個圖像文件均包含屏幕組分的表示)的 內容來重構原始屏幕顯示。如在第一實施方式中一樣,維護各個組分的 被遮蔽細節并將其存儲在圖像文件中。
在圖像捕獲方法的兩個實施方式中,可能需要可編程地操縱正在存 儲的圖像。許多編程語言提供了操縱圖像的能力,包括調整大小以及轉 換圖像格式的能力。例如,如果從操作系統獲取了窗口的細節,則Visual Basic提供了得到窗口的位像的能力。Visual Basic庫還提供了將此 位圖轉換為各種圖像形式的能力。例如,存在針對上文參考第一實施方 式描述的圖像格式而提供該能力的庫。
ImageMagick庫(http:〃www.imagemagick.org/script/api.php )才是供了 針對各種編程語言的可編程接口,其支持具有多個層的.xcf (GIMP)圖 像的創建。可能需要該圖像操縱來將針對特定組分而獲取的圖像的格式
轉換為捕獲方法可以使用的格式(例如,在創建支持使用層的圖像文件 時轉換)。
權利要求
1. 一種捕獲圖像數據的方法,包括接收定義顯示區域的信號,其中,所述顯示區域的圖像數據將被捕獲;訪問與所述所定義顯示區域內的組分相關的元數據;以及,針對所述所定義顯示區域內的組分集合中的每個組分,存儲所述組分的圖像并存儲相關聯的位置數據。
2. 根據權利1所述的方法,其中,所述存儲相關聯的位置數據系,所述位置關系包括所述組分相對于彼此的次序。
3. 根據權利2所述的方法,其中,在三維虛擬桌面環境中,所 述存儲的位置關系包括x軸值和y軸值以及z軸深度值。
4. 根據權利2所述的方法,其中,將對應于所述所定義顯示區 域內多個組分的多個圖像存儲為分層圖像文件內的多個層。
5. 根據權利1所述的方法,其中,針對所述顯示區域內的每個 組分和所有組分,執行所述存儲組分的圖像以及存儲相關聯的位置 數據的步驟。
6. 根據權利1所述的方法,其中,針對所述顯示區域內選定的 用戶指定組分,執行所述存儲組分的圖像以及存儲相關聯的位置數據的步驟。
7. 根據前述權利要求中任一項所述的方法,其中,所述組分圖 像和相關聯的位置數據存儲在單個文件中。
8. 根據權利7所述的方法,其中,將每個圖像存儲為所述單個 文件中的層。
9. 根據權利要求l、 2或者3所述的方法,其中,所述組分圖像 存儲在各自文件中,并且所述位置數據存儲在控制文件中,所述控 制文件包括所述各自組分圖像文件的細節。
10. —種用于捕獲圖像數據的系統,包括 顯示器設備,其被布置為顯示圖像數據;用戶接口,其被布置顯示區域的圖像數據將被捕獲;以及處理器,其被布置為訪問與所 述所定義顯示區域內的組分相關的元數據,以及,針對所述所定義 顯示區域內的組分來存儲所述組分的圖像并存儲相關聯的位置數據。
11. 根據權利IO所述的系統,其中,所述處理器被布置為針 對所述顯示區域內的每個組分和所有組分,存儲組分的圖像并且存 儲相關聯的位置數據。
12. 根據權利IO所述的系統,其中,所述處理器被布置為針 對所述顯示區域內選定的用戶指定組分,存儲組分的圖像并且存儲 相關聯的位置數據。
13. 根據權利IO所述的系統,其中,所述組分圖像和相關聯的 位置數據存儲在單個文件中。
14. 根據權利13所述的系統,其中,將每個圖像存儲為所述單 個文件中的層。
15. 根據權利IO所述的系統,其中,所述組分圖像存儲在各自 文件中,并且所述位置數據存儲在控制文件中,所述控制文件包括 所述各自組分圖像文件的細節。
16. —種計算機可讀介質上的計算機程序產品,其包括用于捕獲 圖像數據的指令集合,該集合包括用于接收定義顯示區域的信號的指令,其中所述顯示區域的圖 像數據將被捕獲;用于訪問與所述所定義顯示區域內的組分相關的元數據的指 令,以及,用于針對所述顯示區域內的組分集合而存儲所述組分的圖像并 存儲相關聯的位置數據的指令。
17. 根據權利16所述的計算機程序產品,其中,針對所述顯示 區域內的每個組分和所有組分,執行所述存儲組分的圖像以及存儲相關聯的位置數據的步驟。
18. 根據權利16所述的計算機程序產品,其中,針對所述顯示 區域內選定的用戶指定組分,執行所述存儲組分的圖像以及存儲相 關聯的位置數據的步驟。
19. 根據權利16所述的計算機程序產品,其中,所述組分圖像 和相關聯的位置數據存儲在單個文件中。
20. 根據權利19所述的計算機程序產品,其中,將每個圖像存 儲為所述單個文件中的層。
21. 根據權利16所述的計算機程序產品,其中,所述組分圖像 存儲在各自文件中,并且所述位置數據存儲在控制文件中,所述控 制文件包括所述各自組分圖像文件的細節。
全文摘要
一種捕獲圖像數據的方法,包括接收(210)定義顯示區域的信號,其中該顯示區域的圖像數據將被捕獲;訪問與所定義的顯示區域內的組分相關的元數據;以及針對顯示區域內的組分,存儲(214-222)每個組分的圖像并存儲相關聯的位置數據,該位置數據包括組分之間的位置關系。創建(222)分層的圖像文件,其包括多個組分中每個組分的圖像以及定義組分相對于彼此的次序的信息。
文檔編號G06F3/12GK101395570SQ200780007722
公開日2009年3月25日 申請日期2007年4月17日 優先權日2006年4月20日
發明者A·P·比爾茲莫爾, D·萊恩 申請人:國際商業機器公司