伊莉討論區

標題: 影像處理Lockbit處理截圖的方法 [打印本頁]

作者: iansuperian    時間: 2017-12-3 11:50 PM     標題: 影像處理Lockbit處理截圖的方法

最近在研究利用C#做影像處理

想到要選取一張圖片的特定範圍

進行擷取動作

網上找到一篇文章

https://stackoverflow.com/questions/10771300/bitmap-lockbits-confusion?answertab=votes#tab-top

蠻符合自己的需求的

但是解答者for迴圈中的row、pixel、pixelComponent三條式子

我不太懂它們的意思

想請問有前輩可以幫忙解惑嗎?


謝謝

作者: sggleeee    時間: 2017-12-4 09:19 PM

大大你好,小弟只是個新手,底下為個人解讀,您參考看看:

底下轉貼大大所提及的 stackoverflow 的連結的原代碼加上個人註解......
  1. var bitmap = new Bitmap(100, 100);

  2. var data = bitmap.LockBits(new Rectangle(0, 0, 10, 10),
  3.                            ImageLockMode.ReadWrite,
  4.                            bitmap.PixelFormat);

  5. //pt指到點陣圖中的第一個像素資料的位址
  6. var pt = (byte*)data.Scan0;

  7. //利用Bitmap的資料列掃描寬度除以Bitmap的圖像寬度來取得每個像素點所占位元組
  8. var bpp = data.Stride / bitmap.Width;

  9. //此例中 data 的Height 與 Wdth均為10個 pixel
  10. for (var y = 0; y < data.Height; y++)
  11. {
  12.     // pt+(y * data.Stride) 來指向每一列的第一筆資料的位址   
  13.     var row = pt + (y * data.Stride);

  14.     for (var x = 0; x < data.Width; x++)
  15.     {
  16.         //取得每個Pixel 的位址, row代表每行資料第一筆的位址, bpp是每個Pixel 所占位元組
  17.         //所以用 row + x*bpp 來取得每個像素點的起位址
  18.         var pixel = row + x * bpp;
  19.         
  20.         //底下 bit 應該是打錯了,應該是 byte而不是bit
  21.         for (var bit = 0; bit < bpp; bit++)
  22.         {
  23.              //將所要擷取的像素點的每一個byte內容存放到pixelComponent變數中
  24.              var pixelComponent = pixel[bit];
  25.         }
  26.     }
  27. }

  28. bitmap.UnlockBits(data);
複製代碼
以上僅就 stackoverflow 上的原代碼來解讀...
不過建議大大再看一下該網站上底下的其他人留言.......

作者: sggleeee    時間: 2017-12-5 12:55 AM

其實大大可以使用Bitmap的Clone方法來選取你要的區域
如果需要進行Byte處理,再將Clone的Bitmap轉成Byte Array即可

參考看看囉 ~
作者: iansuperian    時間: 2017-12-6 08:29 PM

sggleeee 發表於 2017-12-4 09:19 PM
大大你好,小弟只是個新手,底下為個人解讀,您參考看看:

底下轉貼大大所提及的 stackoverflow 的連結的原 ...

好的謝謝大大
說明得很清楚我會再花些時間研究
作者: iansuperian    時間: 2017-12-6 08:30 PM

sggleeee 發表於 2017-12-5 12:55 AM
其實大大可以使用Bitmap的Clone方法來選取你要的區域
如果需要進行Byte處理,再將Clone的Bitmap轉成Byte Ar ...

謝謝您的建議
我會嘗試看看
作者: w100386435    時間: 2018-6-11 09:35 AM

提示: 作者被禁止或刪除 內容自動屏蔽




歡迎光臨 伊莉討論區 (http://www18.eyny.com/) Powered by Discuz!