android get Bitmap or sound from assets

前端 未结 5 1215
陌清茗
陌清茗 2020-12-08 06:34

I need to get Bitmap and sound from assets. I try to do like this:

BitmapFactory.decodeFile(\"file:///android_asset/Files/Numbers/l1.png\");
<
5条回答
  •  南方客
    南方客 (楼主)
    2020-12-08 07:38

    Method to get bitmap of image which is stored in Assets folder.

           public static Bitmap getBitmapFromAssets(Context context, String fileName, int width, int height) {
            AssetManager assetManager = context.getAssets();
    
            InputStream istr;
            Bitmap bitmap = null;
            try {
                final BitmapFactory.Options options = new BitmapFactory.Options();
                options.inJustDecodeBounds = true;
    
                istr = assetManager.open(fileName);
    
                // Calculate inSampleSize
                options.inSampleSize = calculateInSampleSize(options, width, height);
    
                // Decode bitmap with inSampleSize set
                options.inJustDecodeBounds = false;
                return BitmapFactory.decodeStream(istr, null, options);
            } catch (IOException e) {
                Log.e("hello", "Exception: " + e.getMessage());
            }
    
            return null;
        }
    

    Method to resize the bitmap.

     private static int calculateInSampleSize(
                BitmapFactory.Options options, int reqWidth, int reqHeight) {
            // Raw height and width of image
            final int height = options.outHeight;
            final int width = options.outWidth;
            int inSampleSize = 1;
    
            if (height > reqHeight || width > reqWidth) {
    
                final int halfHeight = height / 2;
                final int halfWidth = width / 2;
    
                // Calculate the largest inSampleSize value that is a power of 2 and keeps both
                // height and width larger than the requested height and width.
                while ((halfHeight / inSampleSize) >= reqHeight
                        && (halfWidth / inSampleSize) >= reqWidth) {
                    inSampleSize *= 2;
                }
            }
    
            return inSampleSize;
        }
    

提交回复
热议问题