android开发之bitmap转数组的方法

 /** 方法一
     * 将bitmap转为数组的方法
     *
     * @param bitmap 图片
     * @return 返回数组
     */
    public byte[] getBytesByBitmap(Bitmap bitmap) {
        ByteBuffer buffer = ByteBuffer.allocate(bitmap.getByteCount());
        return buffer.array();
    }

    /** 方法二
     * 将bitmap转为数组的方法
     *
     * @param bitmap 图片
     * @return 返回数组
     */
    public byte[] getBytesByBitmaps(Bitmap bitmap) {
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream(bitmap.getByteCount());
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream);
        return outputStream.toByteArray();
    }

    /** 方法三
     * 其中w和h你需要转换的大小
     * path转换为bitmap:上面方法即可;
     * imageview获取drawable并转换为 bitmap :Bitmap bt= ((BitmapDrawable) mImageview.getDrawable()).getBitmap();
     * resourceid转换为bitmap:Bitmap bt = BitmapFactory.decodeResource(getResources(), R.drawable.resourceid);
     * Drawable转换为bitmap:Bitmap bt= ((BitmapDrawable) Drawable).getBitmap();
     * 因为BitmapDrawable是继承Drawable,所以可以灵活的转换
     *
     * @param path 图片路径
     * @param w    宽度
     * @param h    高度
     * @return 返回
     */
    public Bitmap convertToBitmap(String path, int w, int h) {

        BitmapFactory.Options opts = new BitmapFactory.Options();

        // 设置为ture只获取图片大小

        opts.inJustDecodeBounds = true;

        opts.inPreferredConfig = Bitmap.Config.ARGB_8888;

        // 返回为空

        BitmapFactory.decodeFile(path, opts);

        int width = opts.outWidth;

        int height = opts.outHeight;

        float scaleWidth = 0.f, scaleHeight = 0.f;

        if (width > w || height > h) {

            // 缩放

            scaleWidth = ((float) width) / w;

            scaleHeight = ((float) height) / h;

        }

        opts.inJustDecodeBounds = false;

        float scale = Math.max(scaleWidth, scaleHeight);

        opts.inSampleSize = (int) scale;

        WeakReference weak = new WeakReference(BitmapFactory.decodeFile(path, opts));

        return Bitmap.createScaledBitmap((Bitmap) weak.get(), w, h, true);

    }

猜你喜欢

转载自blog.csdn.net/xiayiye5/article/details/86139988