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

請問Scanline的寬度有限制大小嗎?

尚未結案
phorn
一般會員


發表:28
回覆:60
積分:17
註冊:2004-03-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-07-15 23:42:02 IP:210.244.xxx.xxx 未訂閱
請問一下Scanlinre的寬度有限制大小嗎? 假如我的程式如下,請問TempBitmap->Width有大小限制嗎?? 因為我的TempBitmap->Width如果大於1350就會出現錯誤 如果有大小限制,那請問我要如何做才能讓範圍更大,謝謝!!    for (int y=0;yHeight;y ) { Byte*ptr=(Byte*)TempBitmap->ScanLine[y]; for (int x=0;xWidth;x ) { } }
brook
資深會員


發表:57
回覆:323
積分:371
註冊:2002-07-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-07-16 12:10:59 IP:211.76.xxx.xxx 未訂閱
才1350應該不是問題,10000以上可能要注意ram的大小,你的問題應該在 TempBitmap->PixelFormat上,先設成pf24bit看看.
dean
一般會員


發表:24
回覆:60
積分:21
註冊:2003-08-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-07-16 12:15:30 IP:192.192.xxx.xxx 未訂閱
引言: 請問一下Scanlinre的寬度有限制大小嗎? 假如我的程式如下,請問TempBitmap->Width有大小限制嗎?? 因為我的TempBitmap->Width如果大於1350就會出現錯誤 如果有大小限制,那請問我要如何做才能讓範圍更大,謝謝!! for (int y=0;yHeight;y ) { Byte*ptr=(Byte*)TempBitmap->ScanLine[y]; for (int x=0;xWidth;x ) { } }
HI您好: 既然您已經指定了for (int x=0;xWidth;x ) 那x應該不會超出範圍才對!我的程度不夠,但我的經驗跟認知上是這樣! TempBitmap本身就已經會先指到一個照片,TempBitmap->LoadFromFile("C:\\A.bmp"); 既然如此,她的寬跟高就已經跟A.bmp一樣了! 我不太了解你說要讓範圍更大的意思?處理一張圖片,按照她的大小處理,超過反而會出錯!不是這樣ㄇ?況且我不太了解如果超過這張照片大小處理,要幹麻?還是說,你可以去重新NEW一個bmp(範圍比TempBitmap更大),然後再將處理過的TempBitmap指給新的bmp,然後再到這邊來在另一個處理!?這樣是你要的ㄇ?我不太了解你的意義!回答不好請見諒!
phorn
一般會員


發表:28
回覆:60
積分:17
註冊:2004-03-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-07-16 16:56:19 IP:210.244.xxx.xxx 未訂閱
引言: 才1350應該不是問題,10000以上可能要注意ram的大小,你的問題應該在 TempBitmap->PixelFormat上,先設成pf24bit看看.
感謝brook 大大的指點,加上TempBitmap->PixelFormat=pf24bit 問題就解決了耶!! 請問一下為什麼沒加這行就不行超過1350ㄚ?? 如果沒加這行,那他預設是多少ㄚ??
phorn
一般會員


發表:28
回覆:60
積分:17
註冊:2004-03-03

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-07-16 17:05:43 IP:210.244.xxx.xxx 未訂閱
[/quote] HI您好:   既然您已經指定了for (int x=0;xWidth;x ) 那x應該不會超出範圍才對!我的程度不夠,但我的經驗跟認知上是這樣! TempBitmap本身就已經會先指到一個照片,TempBitmap->LoadFromFile("C:\\A.bmp"); 既然如此,她的寬跟高就已經跟A.bmp一樣了! 我不太了解你說要讓範圍更大的意思?處理一張圖片,按照她的大小處理,超過反而會出錯!不是這樣ㄇ?況且我不太了解如果超過這張照片大小處理,要幹麻?還是說,你可以去重新NEW一個bmp(範圍比TempBitmap更大),然後再將處理過的TempBitmap指給新的bmp,然後再到這邊來在另一個處理!?這樣是你要的ㄇ?我不太了解你的意義!回答不好請見諒! [/quote] 感謝你的回覆,我的意思不是 x 超出範圍,而是現在假設我的圖片寬度大於1350 那程式 x 跑到1350時就出現錯誤了。 現在我的問題已經解決了 謝謝你的回覆!!
brook
資深會員


發表:57
回覆:323
積分:371
註冊:2002-07-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-07-16 18:51:58 IP:218.160.xxx.xxx 未訂閱
引言: 請問一下為什麼沒加這行就不行超過1350ㄚ??
這跟超過1350沒關係,而是你load 進來的圖的 PixelFormat 有關. 假如是pf24bit=3byte,每行需 3*Width byte 假如是pf16bit=2byte,每行需 2*Width byte 假如你load進來的是2byte的資料,而你卻處理3byte的資料,當然會出錯.
引言: 如果沒加這行,那他預設是多少ㄚ??
PixelFormat 值是存圖的人決定的,他愛存多少就多少.
phorn
一般會員


發表:28
回覆:60
積分:17
註冊:2004-03-03

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-07-17 14:30:31 IP:218.165.xxx.xxx 未訂閱
引言:
引言: 請問一下為什麼沒加這行就不行超過1350ㄚ??
這跟超過1350沒關係,而是你load 進來的圖的 PixelFormat 有關. 假如是pf24bit=3byte,每行需 3*Width byte 假如是pf16bit=2byte,每行需 2*Width byte 假如你load進來的是2byte的資料,而你卻處理3byte的資料,當然會出錯.
引言: 如果沒加這行,那他預設是多少ㄚ??
PixelFormat 值是存圖的人決定的,他愛存多少就多少.
慘了經你這麼一說我的問題卻越來越多了耶 請問一下pf24bit=3byte是等於8bitx3嗎? RGB各8bit,各256色嗎? 那pf16bit=2byte,RGB個幾個bit呢?? 在請問一下我原先的問題: 就是pf24bit假如指的是每個像素的顏色,那與我因寬度過大而無法ScanLine 之間有什麼關聯ㄋ,是BCB預設pf24bit以下的格式ScanLine寬度不能超過1350嗎?? 還是其他的原因,能否麻煩您在為我解決一下疑惑 謝謝!!
brook
資深會員


發表:57
回覆:323
積分:371
註冊:2002-07-12

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-07-19 17:01:14 IP:218.160.xxx.xxx 未訂閱
引言: -------------------------------------------------------------------------------- 請問一下pf24bit=3byte是等於8bitx3嗎? -------------------------------------------------------------------------------- YES 引言: -------------------------------------------------------------------------------- RGB各8bit,各256色嗎? -------------------------------------------------------------------------------- YES 引言: -------------------------------------------------------------------------------- 那pf16bit=2byte,RGB個幾個bit呢?? -------------------------------------------------------------------------------- 這個我就不大清楚了,可能RGB變成沒有意義. 引言: -------------------------------------------------------------------------------- 就是pf24bit假如指的是每個像素的顏色,那與我因寬度過大而無法ScanLine 之間有什麼關聯ㄋ,是BCB預設pf24bit以下的格式ScanLine寬度不能超過1350嗎?? -------------------------------------------------------------------------------- 我覺得你load進來的兩個圖的PixelFormat原本就不一樣,一個是pf24bit,另一個是pf16bit(或24bit以下),而你卻認為是超過1350的關係. (因從你的程式片斷也不能看出什麼東東,如要進一步暸解,可能要你附上比較完整的程式)
phorn
一般會員


發表:28
回覆:60
積分:17
註冊:2004-03-03

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-07-20 12:12:43 IP:203.70.xxx.xxx 未訂閱
引言: 我覺得你load進來的兩個圖的PixelFormat原本就不一樣,一個是pf24bit,另一個是pf16bit(或24bit以下),而你卻認為是超過1350的關係. (因從你的程式片斷也不能看出什麼東東,如要進一步暸解,可能要你附上比較完整的程式)
我試著把Load進來的圖PixelFormat改成pf1bit、pf4bit、pf8bit、pf15bit 、pf16bit、pf24bit、pf23bit,在去做處裡結果發現只有PixelFormat=pf24bit的時候才能執行執行。 跟大大說的一樣,與圖片的大小無關。 那原因應該是ScanLine只對3byte的資料做處理對吧?
brook
資深會員


發表:57
回覆:323
積分:371
註冊:2002-07-12

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-07-20 13:30:09 IP:218.160.xxx.xxx 未訂閱
引言: 我試著把Load進來的圖PixelFormat改成pf1bit、pf4bit、pf8bit、pf15bit 、pf16bit、pf24bit、pf23bit,在去做處裡結果發現只有PixelFormat=pf24bit的時候才能執行執行。 跟大大說的一樣,與圖片的大小無關。 那原因應該是ScanLine只對3byte的資料做處理對吧?
你看一下bcb ScanLine 附的例子,它只能處理 pf8bit,而你的程式也只能處理pf24bit,至於其他的格式,當然也要一個程式一個程式寫. 比較懶一點,就先換成你的程式的格式,以符合你的程式的需求,所以為什麼前面要先改成pf24bit,就是這個道理.
系統時間:2024-06-26 10:32:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!