我的问题是:我有一个字节数组,必须与ImageView一起显示。 这是我的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView imageView = (ImageView)findViewById(R.id.show_image);
byte[] arrayBytes = ...; // It's initialized
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSample = 4;
imageView.setImageBitmap(BitmapFactory.decodeByteArray(arrayBytes,0,arrayBytes.length,options));
}
字节数组中存储的每个字节都是double [] []的元素,但采用字节格式。 Android默认情况下使用ARGB_8888格式。
我不知道哪种是显示灰度矩阵的最佳格式。
有什么建议吗?
//编辑
此代码中的问题是无法显示图像。 我认为我所做的转换是错误的:
byte[] byteArray = new byte[SIZE];
int k = 0;
for(...i) {
for(...j) {
byteArray[k] = Double.valueOf(matrix[i][j]).byteValue();
k++;
}
}
var matrix是double [] [],它代表灰度图像。 使用Double类的byteValue方法将每个像素转换为字节。
我认为这是错误的,因为我使用的格式(ARGB_8888或RGB_565)每个像素需要一个以上的字节。
所以,我不知道如何改变它
如果要显示的图像数量最少,则可以使用ARGB_8888继续
增强图像清晰度和色彩
此处每个像素存储在4个字节上。
如果要使用更多数量的图像,请使用RGB_565
此处,每个像素存储在2个字节上,仅RGB通道被编码。
任何您想要的灰度图像,都可以使用RGB_565,它消耗更少的RAM。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView imageView = (ImageView)findViewById(R.id.show_image);
byte[] arrayBytes = ...; // It's initialized
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSample = 4;
// Add this line in your code
options.inPreferredConfig = Bitmap.Config.RGB_565;
imageView.setImageBitmap(BitmapFactory.decodeByteArray(arrayBytes,0,arrayBytes.length,options));
}
香港专业教育学院只是添加新的评论。 感谢您的回答。 您对公羊说的有趣