Как преобразовать путь строкового изображения в строку Base64 в Android?

поэтому я работаю с загрузкой строковых путей в imageViews, и он работает нормально, но мое приложение IOS не может использовать мои строковые пути, поэтому мне нужно переключиться на строки base 64. Как преобразовать мой строковый путь в изображение base 64 и загрузить его в изображение без ошибки нехватки памяти?

Ниже показано, что у меня сейчас есть в myActivityResult().

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        addImageImageView.setVisibility(View.GONE);
        if (requestCode == Constants.REQUEST_CODE && resultCode == RESULT_OK && data != null) {
            //First we gotta make sure to add the images to
            ArrayList<Image> imagesFromGallery = data.getParcelableArrayListExtra(Constants.INTENT_EXTRA_IMAGES);//Image is a personal object I made.

            for (int i = 0; i < imagesFromGallery.size(); i++) {
                images.add(imagesFromGallery.get(i).path);
                LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
                lp.setMargins(20, 20, 0, 0);//5dp = 20 pixels
                lp.height = 720;//180dp = 720pixels
                lp.width = 1400;//330dp = 1320 pixels.
                ImageView newImageView = new ImageView(this);
                newImageView.setLayoutParams(lp);
                Glide.with(this).load(imagesFromGallery.get(i)).centerCrop().into(newImageView);
                imageLinearLayout.addView(newImageView, 0);
            }
    }

person TheQ    schedule 29.10.2016    source источник
comment
Перейдите по этой ссылке.   -  person ADM    schedule 29.10.2016


Ответы (1)


Вы можете использовать класс Android Base64:

String encodedImage = Base64.encodeToString(byteArrayImage, Base64.DEFAULT);

Сначала вам нужно преобразовать изображение в массив байтов. Вот пример:

Bitmap bm = BitmapFactory.decodeFile("/path/to/image.jpg");
ByteArrayOutputStream baos = new ByteArrayOutputStream();  
bm.compress(Bitmap.CompressFormat.JPEG, 100, baos); //bm is the bitmap object   
byte[] b = baos.toByteArray();

поэтому byteArrayImage равен b.

String encodedImage = Base64.encodeToString(b, Base64.DEFAULT);
person Dharmishtha    schedule 29.10.2016
comment
так что будет byteArrayImage? - person TheQ; 29.10.2016
comment
Я отредактировал свой ответ. если это полезно, то не забудьте отметить как правильный ответ. - person Dharmishtha; 08.12.2016