廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 8218 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
rei 手機
個人文章 個人相簿 個人日記 個人地圖
特殊貢獻獎
小人物
級別: 小人物 該用戶目前不上站
推文 x2 鮮花 x366
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x0
[C/C++][精華] [求助]全彩轉灰階的程式碼的問題
const int RED = 2;
const int GREEN = 1;
const int BLUE = 0;

void toGray(TImage *image)
{ Byte * ptr;
int r, g, b, gray, index;

image->Picture->Bitmap->PixelFormat = pf24bit; // for full-color image
for (int row=0; row<image->Picture->Height; ..

訪客只能看到部份內容,免費 加入會員 或由臉書 Google 可以看到全部內容



[ 此文章被rei在2006-04-22 20:36重新編輯 ]


人生要是跟等巴士一樣...
  你願意搭哪一種車?
爆滿?髒車?舊車?新車?空車?還是...走路?
獻花 x0 回到頂端 [樓 主] From:台灣中華電信 | Posted:2006-04-22 20:30 |
cmovies
數位造型
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x20
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

ptr = (Byte*) image->Picture->Bitmap->ScanLine[row];
-> 取得那個 Row 的影像資料內容的位址
影像資料存放的格式由 image->Picture->Bitmap->PixelFormat = pf24bit 來決定
pf24bit 就是影像資料有R G B 三個 Bytes (共24bits)

index+"xxx"跟ScanLine
-> 就是指向這個 Row 中的第 Index 點的哪個顏色 R G B
一般要做影像處理都會直接對影像資料作運算後再存回去
ScanLine 就能提供影像資料內容的位址供程式加以運算處理

const int RED   = 2;
const int GREEN = 1;
const int BLUE = 0;
-> 這就是影像資料的顏色存放的順序

Copy from Borland online help:
Provides indexed access to each line of pixels.
property ScanLine[Row: Integer]: Pointer;
Description
ScanLine is used only with DIBs (Device Independent Bitmaps) for image editing tools that do low-level pixel work.

此文章被評分,最近評分記錄
財富:40 (by codeboy) | 理由: 感謝您的講解喔..^^


獻花 x1 回到頂端 [1 樓] From:台灣中華電信 | Posted:2006-04-22 23:13 |
rei 手機
個人文章 個人相簿 個人日記 個人地圖
特殊貢獻獎
小人物
級別: 小人物 該用戶目前不上站
推文 x2 鮮花 x366
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用cmovies於2006-04-22 23:13發表的 :
index+"xxx"跟ScanLine
-> 就是指向這個 Row 中的第 Index 點的哪個顏色 R G B
一般要做影像處理都會直接對影像資料作運算後再存回去
ScanLine 就能提供影像資料內容的位址供程式加以運算處理

不好意思~

想再請問一下~

如果不做存回去的動作~在下的程式碼應該怎麼改?
//////////////////////////////////////////////////////////////
        ptr[index + BLUE ] = (Byte)gray;
        ptr[index + GREEN ] = (Byte)gray;
        ptr[index + RED   ] = (Byte)gray;
        index += 3;

//////////////////////////////////////////////////////////////
ptr = (Byte*) image->Picture->Bitmap->ScanLine[row];
//////////////////////////////////////////////////////////////


[ 此文章被rei在2006-04-23 11:56重新編輯 ]


人生要是跟等巴士一樣...
  你願意搭哪一種車?
爆滿?髒車?舊車?新車?空車?還是...走路?
獻花 x0 回到頂端 [2 樓] From:台灣中華電信 | Posted:2006-04-23 10:10 |
cmovies
數位造型
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x20
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

不存回去那不就沒改了嗎? 那幹嘛拿出來運算?
還是你要寫到另一個 Bitmap?

下面三行拿掉就沒有存回去了
    ptr[index + BLUE ] = (Byte)gray;
    ptr[index + GREEN ] = (Byte)gray;
    ptr[index + RED   ] = (Byte)gray;


獻花 x1 回到頂端 [3 樓] From:台灣中華電信 | Posted:2006-04-23 12:49 |
rei 手機
個人文章 個人相簿 個人日記 個人地圖
特殊貢獻獎
小人物
級別: 小人物 該用戶目前不上站
推文 x2 鮮花 x366
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用cmovies於2006-04-23 12:49發表的 :
不存回去那不就沒改了嗎? 那幹嘛拿出來運算?
還是你要寫到另一個 Bitmap?

下面三行拿掉就沒有存回去了
    ptr[index + BLUE ] = (Byte)gray;
.......

呵~

謝謝您捏~我的問題已經搞定囉!

圖跟東西都可以很正常的秀出來了~XD

因為昨天我也是把那三行砍掉...可是也出問題>"<...

可是下午在弄一次卻正常了= ="...

XD


人生要是跟等巴士一樣...
  你願意搭哪一種車?
爆滿?髒車?舊車?新車?空車?還是...走路?
獻花 x0 回到頂端 [4 樓] From:台灣中華電信 | Posted:2006-04-23 17:50 |

首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.056419 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言