Bitmap 은 머야?
안드로이드에서 이미지를 표현하기 위해 사용되는 녀석이 Bitmap입니다. Bitmap와 같이 봐야될 녀석은 BtimapFactory클래스 인데 이름에서 알수 있듯이 "Factory" 공장입니다. 바로 Bitmap를 만들어 주는 녀석이죠. 안드로이드에서 사용자가 원하는 이미지를 코드상에 넣을려면 해당 이미지는 /res/drawable-xxxx/ 곳에 넣으시면 됩니다. 권장하는 확장자는 png이지만 jpg도됩니다. 파일을 넣으실때 주의 하셔야 될것은 파일이름은 영어소문자, _(언더바) 만 사용가능하다는거 잊지마세요. 1. BitmapFactory - Method Bitmap을 다루기 위해 주로 사용되는 녀석은 Bitmap안에 있는 메소드가 아니라 BitmapFactory안에 있는 메소드를 주로 사용합니다. 왜그리 되냐면, 이미지 생성(공장에서 만들기 : BitmapFactory ) ---> 화면에 그리기 (Canvas에 그리기 : Canvas ) 위의 단계만 거치면 되니 공장에서 사용되는 메소드가 필요하겠죠? BitmapFacroty 메소드 - 모두 public static Bitmap 로 시작하니 생략하도록 하겠습니다. 1-1. decodeByteArray byte 배열 형태로 되어있는 이미지를 Bitmap으로 만들때 사용합니다.
1-2. decodeFile(String pathName) 휴대폰 안에 파일 형태로 저장된 이미지를 Bitmap으로 만들때 사용합니다.
1-3. decodeFileDescriptor(FileDescriptor fd) FileDescripter로부터 Bitmap를 만들때 사용됩니다. (FileDescripter는 java.io 패키지를 살펴보시면 됩니다.)
1-4. decodeFileDescriptor(FileDescriptor fd) res 폴더에 저장된 녀석들을 Bitmap으로 만들때 사용합니다.
1-5. decodeStream(InputStream is) InputStream으로 부터 Bitmap을 만들때 사용합니다.
그리고 이상한 녀석이 더나오죠? 바로 BitmapFactory.Options 이라는 클래스인데요. 이녀석은 BitmapFactory의 내부클래스로써 이름처럼 옵션 설정을 합니다. 약간 특이한것이 이녀석은 Bitmap에 대한 옵션이다 보니 메소드보다는 변수를 주로 사용합니다. 한번 살펴 보겠습니다. 2. BitmapFactory.Options 에서 사용되는 변수 public Bitmap inBitmap - 설정하면 비트맵 로딩시 설정한 비트맵을 재사용합니다. public int inDensity - 픽셀의 밀도 단위를 비트맵에 사용합니다. public boolean inDither - true로 설정된다면 해당이미지에 dither를 적용합니다. public boolean inInputShareable public boolean inJustDecodeBounds public boolean inMutable - true로 설정하면 불변하는 이미지를 리턴합니다. public boolean inPreferQualityOverSpeed - true로 설정하면 속도보다는 고품질을 수선으로 하여 디코딩 합니다. public Bitmap.Config inPreferredConfig - null이 아니면 내부 설정으로 디코딩합니다. public boolean inPurgeable public int inSampleSize - 메모리를 절약하기 위해서 사용되며 1이상의 숫자값이 설정되면 그숫자만큼 축소시킨다. public boolean inScaled public int inScreenDensity public int inTargetDensity public byte[] inTempStorage public boolean mCancel - 해당 Object가 취소 되었을때는 나타내는 플래그값 public int outHeight - 이미지의 높이를 설정합니다. 만약 디코딩중 에러가 발생하면 -1로 설정됩니다. public String outMimeType - 디코딩된 이미지의 MIME타입을 설정합니다. public int outWidth - 이미지의 폭을 설정합니다. 만약 디코딩중 에러가 발생하면 -1로 설정됩니다. 위를 보시면 비어있는 녀석들이 있죠? 여러분의 도움이 필요합니다. 아시는 분들은 댓글을 달아 주시면 수정해 놓도록 하겠습니다. 저는 다른 녀석들은 거의 쓰지 않구요. 메모리 효율성을 위해 inSampleSize를 가장많이 사용한답니다. Bitmap 이외의 초보플밍님 강좌 입니다. 강의가 참 좋습니다.~!!
|
|||||||||||