Android - 在图像处理上使用线程

时间:2015-04-02 13:48:13

标签: java android multithreading image-processing

我尝试更改所有像素值。为此,我从每个像素值中减去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文件中。

0 个答案:

没有答案