我从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);
}
}
}
}
答案 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
进行自定义希望这有帮助。