我尝试更改所有像素值。为此,我从每个像素值中减去10。此任务对我的图像来说太长(720x1200)。所以,我想使用多线程。我编写了一个使用线程并计算新像素值的代码。
/* Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
//func one or whatever
Date interestingDate = null;
long diffT = 0;
interestingDate = new Date();
*/ for( int y = 0; y < temp.height()/2; y++ ) {
for( int x = 0; x < temp.width(); x++ ) {
for( int c = 0; c < 3; c++ )
{
double values[] = temp.get(y, x);
values[0] = values[0] - 10;
values[1] = values[1] - 10;
values[2] = values[2] - 10;
temp.put(y, x, values);
}
}
}
/* Date end = new Date();
diffT = end.getTime() - interestingDate.getTime();
Log.i(TAG, "diffT = " + diffT);
}
});
t1.start();
主线程使用temp.get(y,x)
获取3个值,但t1线程只获得一个值。当我使用调试器检测运行时outOfArray
错误时,我发现了这一点。
如何使用线程从图像中获取所有像素值(r-g-b)?我没有添加任何代码来等待线程。我该怎么办?
如果我使用AsyncTasks
,我的应用程序可以在没有可用互联网的情况下运行吗? Tutorial说
使用名为ReadWebpageAsyncTask的活动创建一个名为de.vogella.android.asynctask的新Android项目。将android.permission.INTERNET权限添加到AndroidManifest.xml文件中。