對於未記錄的函式,這是一個特別奇怪的地方。對我來說,到目前為止,此函式對於任何特定影像僅傳回兩個值:1 和 8。而且,在實驗了約 40 或 50 次之後,我想我只是根據我的經驗理解了它的運作方式。
傳回的值是影像內特定顏色通道所使用的位元數。這表示影像內特定顏色的可變程度。雖然我收到 1 和 8,但理論上最多可以達到 16 或 32,具體取決於技術在未來十年左右的發展方式。
為了最好地理解此函式,您可能還應該瞭解 ImageMagick 函式 getColorValue。就 ImageMagick 類別而言,可以根據特定像素測量 0 到 1 之間的顏色。紅色、綠色、藍色或任何顏色方案的任何特定顏色,都可能是 0.501960784314 之類的值。但是,由於每個像素都是三種顏色的組合,因此紅色可以是 0.845,綠色可以是 0.254,藍色可以是 0.11。
這一切與 getChannelDepth 函式有什麼關係?很簡單。如果影像中的所有像素對於特定的紅色/綠色/藍色值都是值 1 或值 0,則此函式將針對該顏色通道傳回每個像素 1 個位元的 1。但是,如果影像中對於輸入的通道參數的任何單個像素對於特定顏色通道而言不完全是 1 或 0,則此函式將針對該顏色通道傳回每個像素 8 位元顏色的 8。
如果您為參數中放入的每個顏色通道都收到 1,則表示您正在處理 16 位元的影像 — 您知道,就像 1982 年發行的那些電腦遊戲或 Atari 主機遊戲一樣。您永遠不會忘記 16 位元的綠色,相信我。如果您為參數中放入的每個顏色通道都收到 8,則表示您正在處理任何標準的現代影像。
您可以根據 ImageMagick 類別中可用的通道常數輸入任何顏色通道。請在此處查看它們: https://php.dev.org.tw/manual/en/imagick.constants.php#imagick.constants.channel 。這表示像是 imagick::CHANNEL_UNDEFINED 的格式,但 "_UNDEFINED" 值在此處可以是任何值:未定義、紅色、灰色、青色、綠色、洋紅色、藍色、黃色、Alpha、不透明度、霧面、黑色、索引、全部和預設值。
對於任何 RGB 值為 1 / 0.501960784314 / 0.501960784314 (#FF8080) 的單一像素顏色的影像,您會得到此結果
通道 - 「未定義」:1
通道 - 「紅色」:1
通道 - 「灰色」:1
通道 - 「青色」:1
通道 - 「綠色」:8
通道 - 「洋紅色」:8
通道 - 「藍色」:8
通道 - 「黃色」:8
通道 - 「Alpha」:1
通道 - 「不透明度」:1
通道 - 「霧面」:1
通道 - 「黑色」:1
通道 - 「索引」:1
通道 - 「全部」:8
通道 - 「預設」:8
如果所有顏色都在 0 和 1 之間,且使用 getColorValue 函式,則每個結果都將是 1。如果您正在處理具有完整色彩頻譜深度的影像(幾乎任何給定的照片),您將為紅色、灰色、青色、綠色、洋紅色、藍色、黃色、全部和預設值取得 8,而其餘通道取得 1。也許可用於自動影像編輯,例如與 posterize 或 oilpaint 函式一起使用。