作者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