作者septemhill (冰淇淋乾杯)
看板C_Sharp
標題[問題] 影像區塊存取
時間Sat Apr 10 21:50:35 2010
想請教各位一個關於圖片區塊存取的問題
目前我有一張圖片,因為整張圖直接做速度會太慢(我已經使用指標)
圖片是400*300的bmp,我將他切成四個部份做存取
目前有我做了兩種處理,產生的結果都不一樣,所以我不清楚哪一個才是正確的
所以想請教一下版友
以下是第一種寫法:
unsafe
{
byte *p = (byte *)bmData.Scan0.ToPointer();
for (int i = 0; i < 30; i++)
{
for (int j = 0; j < 400; j++)
{
str += p[0].ToString();
}
p += 3;
}
......
......
......
(同樣的Code重複三次,總共四段)
}
第二種寫法:
unsafe
{
byte*[] p = new byte*[4];
p[0] = (byte *)bmData.Scan0.ToPointer();
for (int i = 1; i < 4; i++)
{
p[i] = p[i -1] + 90000
}
for (int i = 0; i < 30; i++)
{
for (int j = 0; j < 400; j++)
{
str0 += (*p[0]).ToString();
}
}
for (int i = 0; i < 30; i++)
{
for (int j = 0; j < 400; j++)
{
str1 += (*p[1]).ToString();
}
}
for (int i = 0; i < 30; i++)
{
for (int j = 0; j < 400; j++)
{
str2 += (*p[2]).ToString();
}
}
for (int i = 0; i < 30; i++)
{
for (int j = 0; j < 400; j++)
{
str3 += (*p[3]).ToString();
}
}
}
第二種作法是由第一種改良而來
因為考慮到在Duo Core的主機上可以減少code dependence
不過兩種結果跑出來卻不太一樣,讓我覺得應該是某一個方法錯了
但是不知道是第一種還是第二種
還請各位幫忙指正一下,謝謝
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.118.0.142
1F:推 FAITHY:str += p[0].ToString(); 這樣STR不是一直在讀同樣的值嗎 04/10 21:57
2F:→ pico2k:把你要做的東西和演算法講清楚一點,請學會如何問問題... 04/10 22:15