Programing

Base64 문자열을 BitMap 이미지로 변환하여 ImageView에 표시하는 방법은 무엇입니까?

crosscheck 2020. 5. 30. 09:20
반응형

Base64 문자열을 BitMap 이미지로 변환하여 ImageView에 표시하는 방법은 무엇입니까?


BitMap 이미지를 나타내는 Base64 String이 있습니다.

내 Android 앱의 ImageView에서 사용하려면 해당 문자열을 BitMap 이미지로 다시 변환해야합니다.

어떻게합니까?

이것은 이미지를 base64 문자열로 변환하는 데 사용하는 코드입니다.

//proceso de transformar la imagen BitMap en un String:
//android:src="c:\logo.png"
Resources r = this.getResources();
Bitmap bm = BitmapFactory.decodeResource(r, R.drawable.logo);
ByteArrayOutputStream baos = new ByteArrayOutputStream();  
bm.compress(Bitmap.CompressFormat.PNG, 100, baos); //bm is the bitmap object   
byte[] b = baos.toByteArray();
//String encodedImage = Base64.encode(b, Base64.DEFAULT);
encodedImage = Base64.encodeBytes(b);

기본적으로 다른 내장 메소드를 사용하여 코드를 되돌릴 수 있습니다.

byte[] decodedString = Base64.decode(encodedImage, Base64.DEFAULT);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length); 

이 질문에 여전히 관심이있는 사람에게 : If : 1-decodeByteArray가 null을 반환합니다. 2-Base64.decode에서 bad-base64 예외가 발생 함

해결책은 다음과 같습니다.-API에서 보낸 값이 Base64로 인코딩되어 있고 비트 맵 객체로 캐스트하려면 먼저 디코딩해야합니다. Base64로 인코딩 된 문자열을 살펴보십시오.

데이터 : 이미지 / jpg; base64

Base64.decode는이를 해독 할 수 없으므로 인코딩 된 문자열에서 제거해야합니다.

final String encodedString = "data:image/jpg;base64, ....";                        
final String pureBase64Encoded = encodedString.substring(encodedString.indexOf(",")  + 1);

이제 pureBase64Encoded 오브젝트를 디코딩 할 준비가되었습니다.

final byte[] decodedBytes = Base64.decode(pureBase64Encoded, Base64.DEFAULT);

이제 아래 줄을 사용하여 이것을 비트 맵 객체 로 바꾸십시오 ! :

비트 맵 decodedBitmap = BitmapFactory.decodeByteArray (decodedBytes, 0, decodedBytes.length);

또는 훌륭한 라이브러리 Glide를 사용하는 경우 :

Glide.with(CaptchaFragment.this).load(decodedBytes).crossFade().fitCenter().into(mCatpchaImageView);

이것은 일을해야합니다! 이것에 하루가 낭비 되었고이 솔루션을 찾았습니다!

참고 : 여전히 나쁜 base64 오류가 발생하면 Base64.URL_SAFE 등과 같은 다른 Base64.decode 플래그를 고려하십시오.


이것은 매우 오래된 스레드이지만 @Anirudh가 직면 한 것처럼 NULL반환 을 관리하는 데 많은 개발 시간이 필요했기 때문에이 답변을 공유한다고 생각했습니다 BitmapFactory.decodeByteArray().

는 IF encodedImage문자열이 있습니다 JSON응답, 단순히 사용하는 Base64.URL_SAFE대신Base64.DEAULT

byte[] decodedString = Base64.decode(encodedImage, Base64.URL_SAFE);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);

온라인으로 확인하려면 사용할 수 있습니다

http://codebeautify.org/base64-to-image-converter

이런 식으로 문자열을 이미지로 변환 할 수 있습니다

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Base64;
import android.widget.ImageView;

import java.io.ByteArrayOutputStream;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ImageView image =(ImageView)findViewById(R.id.image);

        //encode image to base64 string
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.logo);
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
        byte[] imageBytes = baos.toByteArray();
        String imageString = Base64.encodeToString(imageBytes, Base64.DEFAULT);

        //decode base64 string to image
        imageBytes = Base64.decode(imageString, Base64.DEFAULT);
        Bitmap decodedImage = BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.length);
        image.setImageBitmap(decodedImage);
    }
}

http://www.thecrazyprogrammer.com/2016/10/android-convert-image-base64-string-base64-string-image.html

참고 URL : https://stackoverflow.com/questions/4837110/how-to-convert-a-base64-string-into-a-bitmap-image-to-show-it-in-a-imageview

반응형