我有一個2208 x 3000 TransformedBitmap對象,格式{Indexed8},我做的.CopyPixels()上。我使用TransformedBitmap對象的'Stride'困境
(int)((formattedBitmap.PixelWidth * formattedBitmap.Format.BitsPerPixel + 7)/8)
(假定「formattedBitmap」是從我想要的像素複製圖像的名稱),用於我的方法調用中的「步幅」值和一個字節數組,其是2208長。我在代碼的其他地方也有這樣的東西(圖片的格式是{Gray8}),但是我在上述圖片上試圖做同樣的事情時,我總是得到一個「Argument out of Range」例外說「參數值不能小於'6624000'。\ r \ n參數名稱:緩衝區。」
我的問題是:爲什麼在世界上完全相同的代碼似乎在一個地方工作,而不是另一方面呢?從外行的角度來說,真的是'大步'?我怎樣才能在沒有出現這個錯誤的情況下獲得想要的效果(複製這些比特)?我做錯了什麼?
任何幫助對此將非常感激。非常感謝!
呵呵,MSDN有一個非常不錯的文章,講述'跨度'是什麼。這當然不是「外行人」的術語,我確實覺得它有點讓人滿意,但它是一個很好的參考(只有一個你可能需要多次閱讀才能真正理解你是否是新來的C#中的圖像處理人員) (和我一樣!))LINK:http://msdn.microsoft.com/en-us/library/aa473780(VS.85).aspx – JToland 2010-09-14 19:19:56
作爲一個傾向於瀏覽代碼的人(我們都很匆忙對吧?)我看到你的步幅計算(錯誤的),並花了半小時試圖讓它工作,然後才意識到你有更正確的公式。這將是很好的正確的公式在頂部:) – Peter 2011-11-28 22:43:50