Android上的随机黑白网格

时间:2014-11-21 14:11:59

标签: java android image matrix

我从Android开始,我从事图像处理工作。 我想用随机的黑白像素创建一个网格。我尝试使用位图,但我不知道它是如何工作的。

我尝试使用以下代码,但它说: 表达式的类型必须是数组类型,但它已解析为Matrix

即使没有这个错误,我也不确定这是否是正确的方法。所以,如果你有任何想法......

谢谢!

import java.util.Random;
import android.support.v7.app.ActionBarActivity;
import android.graphics.Bitmap;
import android.graphics.Matrix;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;

public class MainActivity extends ActionBarActivity {       

    private ImageView img;           

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        img = (ImageView)findViewById(R.id.imageView1);                     
    }

    public void RandomImage (View view)
    {
        Random rand = new Random(); 

        Matrix mat = new Matrix();
        for (int i=0; i<100; i++)
        {
            for (int j=0;  j<100 ; j++)
            {                       
                mat[i][j]=rand.nextInt(1);
                img.setImageMatrix(mat);                                     
            }                                               
        }                                   
    }                   
}

2 个答案:

答案 0 :(得分:1)

您可以使用位图来实现此目的,首先创建一个首选大小的位图(在本例中为100 * 100):

 int width = 100;
 int height = 100;

 Bitmap randomGridBitmap = Bitmap.createBitmap(width,height, Bitmap.Config.RGB_565);

使用黑色或白色像素为此位图着色(浏览每个像素并指定“随机颜色”):

Random rand = new Random();

for (int i=0; i<width; i++){
    for (int j=0;  j<height ; j++){
        // default color : Black
        int colorToPut = Color.BLACK;

        // If lucky get a white pixel ;)
        if(rand.nextInt(2)==0){
            colorToPut = Color.WHITE;
        }

        // Set color to (i,j) pixel
        randomGridBitmap.setPixel(i,j,colorToPut);
    }
}

最后将这个位图放在你的imageview中:

imv.setImageBitmap(randomGridBitmap);

在全球范围内,您的活动应如下所示:

public class MainActivity extends ActionBarActivity {       

    private ImageView img;           

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        img = (ImageView)findViewById(R.id.imageView1); 
        createAndSetRandomImage();                    
    }

    public void createAndSetRandomImage(){
        Random rand = new Random();

        for (int i=0; i<width; i++){
            for (int j=0;  j<height ; j++){
            // default color : Black
            int colorToPut = Color.BLACK;

            // If lucky get a white pixel ;)
            if(rand.nextInt(2)==0){
                colorToPut = Color.WHITE;
            }

            // Set color to (i,j) pixel
            randomGridBitmap.setPixel(i,j,colorToPut);
            }
        }
        imv.setImageBitmap(randomGridBitmap);                        
    }                   
}

您尝试使用setImageMatrix()方法(奇怪的是没有记录),但它用于转换图像视图的图像(例如旋转或自定义比例图像)而不是设置图像。

答案 1 :(得分:-1)

我个人建议您使用GridView并根据需要GridView

进行自定义

希望这有帮助。