我有一个电子设备(扫描仪),通过wifi向android设备发送字节。 在android我采取字节并创建整数数组(每个数字代表像素)。 然后我用位图类创建png文件。 图像看起来应该是这样。 我在单独的线程中处理图像。 我的目标是创建新图像并以最快的方式替换旧图像。 事实上,我想创造电影的幻觉。
问题在于创建图像需要花费太多时间。
以下是相关代码
Bitmap mBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
Canvas c = new Canvas(mBitmap);
Paint paint = new Paint();
...
int count = mBufferIn.read(buffer);
while(count != -1)
{
for(int i=0;i<count;i=i+2)
{
k = ((buffer[i] << 8) & 0x0000ff00) | (buffer[i+1] & 0x000000ff);
Log.e("TCP Client", "k=" + Integer.toString(k) );
colors[pixelIndex]=k;
pixelIndex++;
}
count = mBufferIn.read(buffer);
if(count ==-1)
{
try {
pixelIndex=0;
c.drawBitmap(colors, 0, width, 0, 0, width, height, false, paint);
...
我已将代码更改为:
try {
while((numberOfRead =mBufferIn.read(buffer)) != -1)
{
babff.append(buffer, 0, numberOfRead);
//offset = offset + numberOfRead;
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
byte [] imageBytes = babff.toByteArray();
BitmapFactory.Options opt = new BitmapFactory.Options();
opt.outHeight = height;
opt.outWidth = width;
Bitmap bitmap = BitmapFactory.decodeByteArray (imageBytes, 0, imageBytes.length,opt);
Paint paint1 = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG);
Canvas canvas = new Canvas(bitmap);
canvas.drawBitmap(bitmap, 0, 0, paint1);
现在的问题是位图是NULL
答案 0 :(得分:0)
逐像素生成图像设置非常慢。读取字节数组中的所有内容,并从字节数组
创建位图