全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2694
推到 Plurk!
推到 Facebook!

BCB中影像格式pf8bit的問題(首po沒有照格式post)

答題得分者是:arisaka_matsuri
miltonho6721
一般會員


發表:2
回覆:1
積分:0
註冊:2008-01-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-01-02 21:11:23 IP:134.208.xxx.xxx 訂閱

[code cpp]
Graphics::TBitmap *TheBitmap,*TempBitmap;
int Width, Height;
Byte *ptr1,*ptr2;
//---------------產生一個新的Bitmap元件,
//---------------並將指標TempBitmap指向該元件
//---------------此元件之主要目的為儲存翻轉或旋轉後的結果
TempBitmap= new Graphics::TBitmap();
//---------------將指標TheBitmap指向原始影像
TheBitmap= Image1->Picture->Bitmap;
TheBitmap->PixelFormat=pf8bit;
Width=TheBitmap->Width;
Height=TheBitmap->Height;
TempBitmap->Assign(TheBitmap);
Width=TheBitmap->Width;
Height=TheBitmap->Height;
for (int y=0;y {
ptr1=(Byte*) TempBitmap->ScanLine[y];
ptr2=(Byte*) TheBitmap->ScanLine[y];
for(int x=0;x ptr1[x]=ptr2[Width-1-x];
}
TheBitmap->Assign(TempBitmap);
delete TempBitmap;
}
[/code]

可以請問一下嗎,各位高手
這是一個翻轉圖片的一支程式,
但是本人實驗了這一支程式有一些小問題想提出來與各位分享
q1: 在 TheBitmap->PixelFormat=pf8bit;這一行程式中
我假設一些condition
a>若是不加這一行,但一開始就將要rotate的圖片轉成8bit的圖像檔,是可以水平翻轉的
但是若是這一行加了,直將針對非bit的圖像檔,去做處理,亦是可以翻轉,但是跟第一個針對8bit的圖檔所水平翻轉出來的
檔案是不一樣的樣子…為什麼會這樣呢
b>若是不加這一行,直加針對非8bit的圖像檔,不能轉,他翻轉只有圖片的一半,這是為什麼呢??
c>若是我想翻轉一個非8bit的圖像檔,如何改寫這一支程式呢
d>在寫了這一行的程式時,我亦查過了pf8bit的資料型態,除了這個以要,亦有pf2bit;pf24bit這一類的東西,這如何使用呢…(我是有利用
canvas這個指令來完成這個動作,但是就是想試看看scanline如何完成)
q2: 第二個問題我想在這個網頁上有人已經回答了
Byte* ptr1;
變數ptr1是一個指標,資料型態是Byte
因為Scanline回傳的是(void*)型態,所以要轉型成(Byte*)型態,ptr1才能被assign
我不懂的是為什麼要將ptr1宣告成byte 型態…
這就是我的問題,請各位高手幫幫忙囉…bcb新手
不知道這個格式對不對

arisaka_matsuri
高階會員


發表:25
回覆:205
積分:231
註冊:2003-10-19

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-01-03 16:39:29 IP:140.113.xxx.xxx 訂閱
要利用Scanline來操作影像資料
必須對影像資料存放在記憶體中的方式非常清楚

TBitmap::PixelFormat的pf8bit跟pf24bit
分別是表示影像資料為每個像素8 bits(1 byte)
或是每個像素需要用24 bits(3 bytes)來表示
一般來說,灰階影像會用8 bits來表示一個像素
而RGB彩色影像會用24 bits來表示一個像素

所以,
q2:
宣告成BYTE表示用指標操作時以一個byte為單位
剛好可以操作一個8 bits表示的像素
如果宣告成unsigned long (DWORD),會發生什麼事?
如果宣告成RGBTRIPLE呢?
這些是指標操作的是基本觀念

q1:
a. 文句有點混亂,讓人不知所云,有圖嗎?
b. 只有翻轉圖片的一半(或是三分之一?)會不會跟指標的型態有關?
c. 如果把指標宣告成RGBTRIPLE呢?這跟pf24bit有什麼關聯性?
d. 以上的答案應該可以回答這題了

希望你可以在這裡學到東西:)

===================引 用 miltonho6721 文 章===================

不知道這個格式對不對
miltonho6721
一般會員


發表:2
回覆:1
積分:0
註冊:2008-01-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-01-03 20:36:04 IP:61.217.xxx.xxx 訂閱
感謝高手的指教,下次發問會在更精簡一點,也寫的更清楚一點…
真的感謝你
系統時間:2024-05-20 2:53:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!