2011-11-20 64 views
0

如何比較2個圖像的像素格式?C#比較像素格式

我已經試過這樣:

if (img1.PixelFormat > img2.PixelFormat) 

但 「Format8bppIndexed」 得到評爲比 「Format24bppRgb」

我在做什麼錯更大?

+0

首先,它會GOOT知道什麼是「大」的意思;例如那些命令的順序是:Format16bppArgb1555,Format16bppGrayScale,Format16bppRgb555和Format16bppRgb565 – Lucero

+0

我會和最高顏色深度的人解決。我在看那些枚舉值。即時通訊不知道要放在頂部,並把它們按最低顏色深度排列。 MSDN不是很清楚這一點。 – Yustme

+0

嗯,真的沒有「更大的顏色深度」 - 它們是不同的,但我不能說哪一個比另一個更大。你需要找出你的需求是什麼,然後再實施它... – Lucero

回答

1

的比較是有效的,但你只是比較枚舉的這樣的結果將取決於值中定義的順序。

如果你需要比較的圖像的格式,您將不得不自己制定規則。哪個值「大於」另一個將取決於您的應用程序。

由於@Oded表明在他的評論,你可以創建與返回您比較返回有意義的結果,並使用您的測試正確的相對值(色深)的PixelFormat鍵控Dictionary

+0

我看到...我怎麼改變這個,以便我可以比較圖像的顏色深度? – Yustme

+0

@Yustme - 您可以創建一個查找字典,用不同的'PixelFormat'枚舉值作爲鍵值,其中值爲顏色深度順序,並將其用於測試。 – Oded

+0

@Oded - 這是一個好主意。我將它添加到答案:) – ChrisF

1

如果你想通過自己的位深度的圖像進行比較,請嘗試以下,這爲我工作:

/// <summary> 
/// Returns the bit depth of <paramref name="image"/>. 
/// </summary> 
public static int GetBitDepth(this Image image) 
{ 
    return ((int) image.PixelFormat >> 8) & 0xFF; 
}