2010-06-26 106 views
0

我降低了位圖的分辨率。我發現一個網站上的方法如下如何刪除位圖中的像素?

所有周圍像素的值的平均值,將該值存儲在選定的像素位置,然後刪除所有周圍像素。因此,一個4 * 6矩陣變成一個4 x 3矩陣。

我對這個代碼

for(int y = 0; y < bmp.bmHeight; y++) 
    {  
     for(int x = 0; x < bmp.bmWidth; x++)  
     {   
      COLORREF rgb = dc.GetPixel(x, y);  
      BYTE r = GetRValue(rgb);  
      BYTE g = GetGValue(rgb);  
      BYTE b = GetBValue(rgb);    
      dc.SetPixel(x, y, RGB(r,g,b));  
     } 
    } 

告訴我如何才能刪除像素訪問像素?

回答

4

你不能真的刪除一個像素,位圖是一個像素矩陣。相反,您應該製作一個預期大小的新位圖,並將像素複製到該位圖中。

+0

哦,我明白了。你可以告訴我如何創建一個新的預期大小的位圖並將像素複製到該位置? – 2010-06-26 04:47:40

+0

這取決於你正在使用的庫。所以也許你可以知道;-) – Kleist 2010-06-26 11:17:44

+0

我使用MFC。這是我的代碼的一部分。 CBitmap img; CDC dc; BITMAP bmp; img.LoadBitmapW(IDB_BIT); img.GetBitmap(&bmp); CDC *的pDC =這個 - >的GetDC(); dc.CreateCompatibleDC(PDC); 的CBitmap * POLD = dc.SelectObject(&img); – 2010-06-26 18:15:39