안드로이드 개발 질문/답변
(글 수 45,052)
png, jpg 파일이 아닌
.dat 파일의 정보를 읽어와서 bitmap을 생성하고 싶은데.
InputStream is = null;
try {
is = assetManager.open("이미지.dat");
int size = is.available();
byte[] buffer = new byte[size];
int[] colors;
is.read(buffer);
mBitmap = BitmapFactory.decodeByteArray(buffer, 0, buffer.length);
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
바이트 값도 잘받아오는데 왜 생성을 못하나요??
dat파일은 다른 방법으로 bitmap 파일을 생성해야하나요?
buffer값만으로 이미지의 width와 height를 알아 낼 수 있는 방도가 있을까요?
크기를 InputStream의 available()로 얻어오면 안되는 것으로 압니다.
InputStream에 따라서 available()을 사용 할 수 있는 클래스가 있고, 사용할 수 없는 클래스가 있기 때문입니다.
아마도 FileInputStream이라면, 사용 가능할 것 같지만, 그래도 굳이 쉬운길을 나두고 어려운 길로 가실 필요는 없습니다.
BitmapFactory에는 InputStream을 통해서 Bitmap을 생성할 수 있는 메소드도 제공하고 있습니다.
BitmapFactory.decodeStream(InputStream is) 이 메소드를 이용해보세요.
링크 : http://developer.android.com/reference/android/graphics/BitmapFactory.html#decodeStream(java.io.InputStream)