이미지 파일을 sdcard에서 비트 맵으로 읽는 중 NullPointerException이 발생하는 이유는 무엇입니까?


105

이미지 파일을 sdcard에서 비트 맵으로 어떻게 읽을 수 있습니까?

 _path = Environment.getExternalStorageDirectory().getAbsolutePath();  

System.out.println("pathhhhhhhhhhhhhhhhhhhh1111111112222222 " + _path);  
_path= _path + "/" + "flower2.jpg";  
System.out.println("pathhhhhhhhhhhhhhhhhhhh111111111 " + _path);  
Bitmap bitmap = BitmapFactory.decodeFile(_path, options );  

비트 맵에 대한 NullPointerException이 발생합니다. 비트 맵이 null임을 의미합니다. 하지만 "flower2.jpg"로 sdcard에 저장된 이미지 ".jpg"파일이 있습니다. 뭐가 문제 야?

답변:


265

MediaStore API는 아마도 알파 채널을 버리고있을 것입니다 (예 : RGB565로 디코딩). 파일 경로가있는 경우 BitmapFactory를 직접 사용하되 알파를 유지하는 형식을 사용하도록 지시하십시오.

BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap bitmap = BitmapFactory.decodeFile(photoPath, options);
selected_photo.setImageBitmap(bitmap);

또는

http://mihaifonoage.blogspot.com/2009/09/displaying-images-from-sd-card-in.html


3
무엇 selected_photo여기?
Autonomous

안녕하세요! 앨범에 저장된 이미지는 3840x2160이지만이 방법을 통해 서버에 업로드 된 이미지는 1080x1920
Shajeel Afzal

@ ParagS.Chandakkar는 디코딩 된 파일을 표시 할 수있는 ImageView 일 수 있습니다.
PinoyCoder


28

이 코드를 시도하십시오.

Bitmap bitmap = null;
File f = new File(_path);
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
try {
    bitmap = BitmapFactory.decodeStream(new FileInputStream(f), null, options);
} catch (FileNotFoundException e) {
    e.printStackTrace();
}         
image.setImageBitmap(bitmap);

6

다음 코드를 작성하여 sdcard의 이미지를 Base64 인코딩 문자열로 변환하여 JSON 개체로 전송했습니다.

String filepath = "/sdcard/temp.png";
File imagefile = new File(filepath);
FileInputStream fis = null;
try {
    fis = new FileInputStream(imagefile);
    } catch (FileNotFoundException e) {
    e.printStackTrace();
}

Bitmap bm = BitmapFactory.decodeStream(fis);
ByteArrayOutputStream baos = new ByteArrayOutputStream();  
bm.compress(Bitmap.CompressFormat.JPEG, 100 , baos);    
byte[] b = baos.toByteArray(); 
encImage = Base64.encodeToString(b, Base64.DEFAULT);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.