我用這個link來增加我的程序調整圖像亮度的能力。此代碼是可以的,但需要時間調整亮度(圖像文件大小1.8mb)。當我嘗試較低質量的圖像時,它會立即調整圖像(圖像文件大小爲100KB)。是否有任何有效的方法來調整圖像的亮度。大圖像的圖像亮度c#
0
A
回答
2
該代碼似乎使用GetPixel
和SetPixel
定期Bitmaps
。這是一個壞主意,因爲它太慢了。
要操縱Bitmap
的單個像素,必須鎖定它(Get/SetPixel在幕後執行),並以像素爲單位進行操作,這意味着對於1000x1000大小的圖像,一百萬次鎖定/解鎖操作必須是執行。這造成了巨大的開銷。
方法來避免這一
一種方法是鎖定與LockBits
功能整個位圖。現在我們可以遍歷像素並修改它們。有關此方法的
兩個附註:
我們現在訪問是每個像素的原始字節,即每個信道單獨:要麼BGR或BGRA,根據像素格式。這意味着通道是與Color方法的通常RGB/ARGB格式物理相反。
對於一些例子,你可能想瀏覽過some of these posts。請特別注意this one,它使用委託來實現靈活的操作!
(請注意,有幾個職位使用2個或甚至3鎖定位圖,因爲他們瞄準的合成圖像。)
方法二
另一種方式來解決鎖定一個像素的開銷一個是現成的位圖類,通過將自己鎖定爲一個整體來提供幫助。 Here和here是我沒有嘗試自己的例子。
方法三
最後有圖像處理,這既是相當簡單和真快一個非常優雅的方法;也專業製作以獲得最佳效果:您可以設置一個ColorMatrix
。
它可以讓你改變亮度,伽馬,色調,然後一些。 Here is a very nice introduction。
唯一的缺點是,這僅限於一些固定的操作,所以您不能爲其他奇特的東西創建自定義過濾器,如photoshop-type layer modes或其他,特別是那些需要處理相鄰像素的過濾器。模糊..
但是,如果你想要的只是改變亮度,這是我會推薦!
相關問題
- 1. Open GL +圖像亮度+保存圖像
- 2. 調整圖像的亮度
- 3. matlab - 圖像中的亮度
- 4. 檢測圖像的亮度
- 5. 圖像亮度對比seekbar
- 6. 閾值亮度圖像
- 7. 增加亮度圖像LabVIEW
- 8. 八度顯示低亮度圖像
- 9. 灰度圖像在NDK(C/C++)中失去亮度Android
- 10. GDIPlus ::位圖亮膚圖像C++
- 11. 調整亮度的圖像部分的
- 12. 如何控制圖像的亮度?
- 13. 如何更改圖像的亮度
- 14. L * u * v *增加圖像的亮度?
- 15. 修改RGB圖像亮度的算法?
- 16. 來自圖像差異的亮度?
- 17. 使用html5/CSS/JS的圖像亮度
- 18. 圖像處理中亮度和亮度的差異
- 19. 使用小冊子調整圖像亮度圖像重疊
- 20. 最大密度的圖像
- 21. 如何降低圖像亮度?
- 22. 重新着色圖像保持亮度
- 23. 圖像處理:亮度加權
- 24. 確定圖像整體亮度
- 25. Flex:如何調整圖像控件內部圖像的對比度/亮度?
- 26. 如何設置圖像亮度以恢復其原始亮度?
- 27. 大圖像:飼料圖像
- 28. 調整圖像大小後放大圖像內的圖像
- 29. C#WPF圖像加載像進度條
- 30. C#創建梯度圖像
您可以使用更低級別的方法對其進行編輯。 http://www.vcskicks.com/fast-image-processing.php – leAthlon
與大型圖像(100 kB vs 1.8 MB)相比,您在處理非常小的圖像時總會有所不同。那麼你對這個問題的解決方案有什麼期望? – Fildor
該代碼似乎在常規位圖上使用SetPixel。這是一個糟糕的主意,因爲它太慢了。而是使用a)LockBits或b)FastBitmap或c)ColorMatrix!大量的例子在這裏和網絡.. – TaW