이미지 파일을 sdcard에서 비트 맵으로 읽는 중 NullPointerException이 발생하는 이유는 무엇입니까? “flower2.jpg”; System.out.println(“pathhhhhhhhhhhhhhhhhhhh111111111 ” + _path); Bitmap bitmap =

이미지 파일을 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”파일이 있습니다. 뭐가 문제 야?



답변

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


답변

효과가있다:

Bitmap bitmap = BitmapFactory.decodeFile(filePath);

답변

이 코드를 시도하십시오.

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);

답변

다음 코드를 작성하여 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);