【发布时间】:2017-08-22 06:52:35
【问题描述】:
位图压缩过程需要太多时间。我该如何解决这个问题?
在活动中:
icon= BitmapFactory.decodeResource(getResources(),R.mipmap.image);
在回调类中:
synchronized (holder) {
stream = new ByteArrayOutputStream();
Log.d("LIFE_CYCLE", "settingImage 1=" + System.currentTimeMillis());
icon.compress(Bitmap.CompressFormat.PNG, 100, stream);
Log.d("LIFE_CYCLE", "settingImage 2=" + System.currentTimeMillis());
byteArray = stream.toByteArray();
b = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
if(mWidth<mHeight){
icon= Bitmap.createScaledBitmap(b, (int)(mWidth*0.75), (int)(mWidth*0.75), false);
}
else{
icon= Bitmap.createScaledBitmap(b, (int)(mHeight*0.75), (int)(mHeight*0.75), false);
}
canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
canvas.drawBitmap(icon, ((mWidth)-icon.getWidth())/2, (mHeight-icon.getHeight())/2, new Paint());
draw_target(canvas);
}
这条线大约需要 2 秒:
icon.compress(Bitmap.CompressFormat.PNG, 100, stream);
附:我的图像是部分透明的,所以我需要使用 .PNG 而不是 .JPG
【问题讨论】:
-
你到底想做什么?
-
在surfaceView上绘制一张图片(来自mipmap文件夹)
-
这段代码没有意义。你没有存储压缩位图,所以压缩是没用的。它还使用内存不必要的图标和 b 占用相同数量的内存。只需从图标创建缩放。最好先加载缩放图标。
-
塞尔文,谢谢!!!这对我有帮助!!!!请把它写成答案,我会接受的。再次感谢我的朋友!
标签: android bitmap android-bitmap bitmapimage bitmapfactory