共用方式為


CreateMultiProfileTransform 函式 (icm.h)

接受設定檔陣列或單一 裝置連結設定檔 ,並建立可供應用程式用來執行色彩對應的色彩轉換。

語法

HTRANSFORM CreateMultiProfileTransform(
  PHPROFILE pahProfiles,
  DWORD     nProfiles,
  PDWORD    padwIntent,
  DWORD     nIntents,
  DWORD     dwFlags,
  DWORD     indexPreferredCMM
);

參數

pahProfiles

要使用的設定檔控制碼陣列的指標。 函式會決定 HPROFILE 是否包含國際色彩聯盟 (ICC) 或 Windows Color System (WCS) 設定檔資訊,並適當地處理它們。 當 OpenColorProfileWWcsOpenColorProfileW傳回有效的 WCS 設定檔時,這些設定檔控制碼會包含 DMP、CAMP 和 GMMP 設定檔的組合。

nProfiles

指定陣列中的設定檔數目。 最大值為 10。

padwIntent

要使用的意圖陣列指標。 每個意圖都是下列其中一個值:

INTENT_PERCEPTUAL

INTENT_SATURATION

INTENT_RELATIVE_COLORIMETRIC

INTENT_ABSOLUTE_COLORIMETRIC

GMMP 是意圖的一般化。 意圖的可能來源有兩種:「destination」 設定檔和 CreateMultiProfileTransform的意圖清單參數。 「目的地」一詞並未使用,因為配置檔案清單參數中的兩個設定檔會作為第一個目的地,然後作為來源。

如需詳細資訊,請參閱 轉譯意圖

nIntents

指定意圖陣列中的專案數目:可以是 1 或與 nProfiles相同的值。 對於包含任何 WCS 設定檔的設定檔陣列,會忽略第一個轉譯意圖,而且只會針對這些設定檔陣列使用 nProfiles -1 元素。 nIntents的最大數目是 10。

dwFlags

指定用來控制轉換建立的旗標。 請參閱<備註>。

indexPreferredCMM

指定色彩設定檔的單一型索引,指出要使用的色彩管理模組 (CMM) 。 應用程式開發人員可讓 Windows 藉由將此參數設定為 INDEX_DONT_CARE 來選擇 CMM。 請參閱 使用色彩管理模組 (CMM) 協力廠商 CMM 僅適用于 ICC 工作流程。 包含 WCS 設定檔的設定檔陣列將會忽略此旗標。 當只使用 ICC 設定檔,以及使用WCS_ALWAYS旗標時,也會忽略它。

傳回值

如果此函式成功,則傳回值是色彩轉換的控制碼。

如果此函式失敗,則傳回值為 Null。 如需擴充錯誤資訊,請呼叫 GetLastError

備註

如果使用裝置連結設定檔, 如果 nProfiles 未設定為 1,函式將會失敗。

意圖的陣列會指定如何結合設定檔。 第 n個意圖用於結合陣列中的 n個設定檔。 如果只指定一個意圖,則會用於第一個設定檔,而所有其他設定檔都會使用 Match 意圖來合併。

dwFlags中的值僅供提示使用。 色彩管理模組必須決定使用它們的最佳方式。

Windows Vista:已新增三個新的旗標,可搭配 dwFlags使用:

旗標 描述
PRESERVEBLACK 如果設定此位,轉換引擎會將適當的黑色產生 GMMP 插入為轉換順序中的最後一個 GMMP。 此旗標僅適用于純 WCS 轉換。
SEQUENTIAL_TRANSFORM 如果設定此位,WCS 處理管線中的每個步驟都會針對影像中的每個圖元執行,而且不會建置任何優化的色彩轉換。 此旗標僅適用于純 WCS 轉換。限制:使用SEQUENTIAL_TRANSFORM旗標集所建立的轉換只能在建立它的執行緒中使用,而且一次只能用於一個色彩轉譯呼叫。 在建立循序轉換之前,必須先初始化 COM,而且必須在轉換物件的存留期內保持初始化狀態。
WCS_ALWAYS 如果已設定此位,即使是所有 ICC 轉換也會使用 WCS 程式碼路徑。

注意

SEQUENTIAL_TRANSFORM意外省略 Windows Vista SDK 中的 icm.h 標頭。 如果您想要使用 SEQUENTIAL_TRANSFORM 旗標,請在應用程式中定義它,如下所示:

#define SEQUENTIAL_TRANSFORM 0x80800000

如需詳細資訊,請參閱 CMM 轉換建立旗標。 所有提及的旗標都支援所有類型的轉換,但FAST_TRANSLATE和USE_RELATIVE_COLORIMETRIC除外,這僅適用于純的 ICC 對 ICC 轉換。

CreateMultiProfileTransform函式是在裝置內容之外使用。 從色彩設定檔轉換成相同的色彩設定檔時,色彩可能會改變。 這是因為精確度錯誤。 因此,在這些情況下不應該執行色彩轉換。

我們建議來源與目的地 DMP 之間只有一個 GMMP。 從 DMP/CAMP 組合建立 (GBD) 的 Gamut 界限描述。 後續的 GMMP 會在處理鏈結中使用 BLOB 之前,直到序列中接下來有 DMP/CAMP GBD 使用為止。 例如,假設序列 DMP1、CAMP1、GMMP1、GMMP2、GMMP3、DMP2、CAMP2、GMMP4、GMMP5、CAMP3、DMP3。 然後 GMMP1,GMMP2 會使用 GBD1 作為其來源和目的地。 然後 GMMP3 會使用 GBD1 作為來源,並以 GBD2 作為目的地。 然後 GMMP4 會使用 GBD2 作為來源和目的地。 最後,GMMP5 使用 GBD2 做為來源,而 GBD3 作為目的地。 這假設沒有 GMMP 與其旁的一個相同。

針對 WCS 設定檔,建議您將轉譯意圖設定為 DWORD_MAX,以便在 WCS 設定檔控制碼內使用 GMMP。 這是因為轉譯意圖的陣列優先于 HPROFILEs 所指定或包含在設定檔中的轉譯意圖或遊戲對應模型。 轉譯意圖的陣列會參考這些轉譯意圖的預設 GMMP。 在理想情況下,使用 WCS 設定檔資訊建立 HPROFILE 時,只會在來源和目的地裝置之間執行一個遊戲對應,方法是將其中一個或其他 GMMP 設定為 Null 。 任何使用 WCS DMP 的繼承應用程式都會叫用一連串的 GMMP。 系統會根據 DMP 和 CAMP 選擇 GB。 針對中繼 GMMP 遊戲界限,會使用來源和目的地 GBD。

總而言之,如果 nIntents == 1,則會根據 padwIntent 值的 GMMP 來設定第一個 GMM,除非該值是DWORD_MAX,在此情況下會使用第二個設定檔的內嵌 GMM 資訊, (內嵌 GMM 資訊是 GMMP,或在 ICC 設定檔的案例中, 與設定檔標頭中的意圖相對應的基準 GMM) 。 GMM 的其餘部分會根據 RelativeColorimetric 設定為預設值* 的 GMMP 來設定。

如果nIntents = nProfiles -1,則每個 GMM 都會根據在對應索引的padwIntent陣列中設定為預設值* 的 GMMP,但padwIntent值是DWORD_MAX。 針對DWORD_MAX 之 padwIntent 陣列中的值,對應位置的 GMM 會根據 GMM 所對應之兩個設定檔第二個設定檔中的內嵌 GMM 資訊進行設定。 (同樣地,內嵌 GMM 資訊是 GMMP,或者,如果是 ICC 設定檔,則會從設定檔標頭) 對應至** 意圖的基準 GMM。

如果nIntents = nProfiles,則會忽略第一個意圖,而且函式的行為就像nIntents = nProfiles -1 一樣。

padwIntentsnIntents的任何其他組合都會傳回錯誤。

* 「set as default」 表示使用 WcsGetDefaultColorProfile 查詢預設 GMMP,並將其 profileManagementScope 參數設定為 WCS_PROFILE_MANAGEMENT_SCOPE_CURRENT_USER。 這可能會傳回目前使用者或全系統預設值,如 WcsGetDefaultColorProfile檔中所述。

** 「GMM 對應至」 並不表示 「GMM from the GMMP set as default for」。 相反地,這表示「ICC 設定檔意圖與基準 GMM 演算法之間的常數關聯」。

對 ICC ColorSpace 設定檔的 WCS 轉換支援僅限於 RGB 色彩空間設定檔。 下列 ICC 配置檔案類型不能用於 CITE 處理的轉換中,可能是混合的 WCS/ICC 轉換,或是具有 WCS_ALWAYS 集的 all-ICC 轉換:

  • 非 RGB ColorSpace 設定檔
  • NamedColor 設定檔
  • n 通道設定檔 (其中 n > 8)
  • DeviceLink 設定檔
  • 抽象設定檔

需求

   
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
標頭 icm.h
程式庫 Mscms.lib
Dll Mscms.dll

另請參閱