본문 바로가기

Bitmap

[Android] 이미지 크기 알아보는 방법 /** Get Bitmap's Width **/ public static int getBitmapOfWidth( String fileName ){ try { BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeFile(fileName, options); return options.outWidth; } catch(Exception e) { return 0; } } /** Get Bitmap's height **/ public static int getBitmapOfHeight( String fileName ){ try { BitmapFactory.Opt.. 더보기
[Android] !!! FAILED BINDER TRANSACTION !!! 안드로이드에서 Material Design을 계속 밀어줌으로써,Activity 간의 이동을 할 때 Bitmap을 넘겨주고자 하는 일이 많아졌다. Intent에 Bitmap을 put 시킬 때, 안드로이드에서는 이미지 크기가 40KB 로 제한되어 있다.따라서 40KB 이상의 Bitmap을 넣을 경우!!! 아래와 같은 Log를 볼 수 있다. !!! FAILED BINDER TRANSACTION !!! 그럼.. 이미지의 크기를 낮춰야 할까??? 그럼 이미지가 깨지게 되는데.. 어떻하지??이벤트 마다 이미지를 다시 로딩 해야 하나??? 화면을 넘어가서 로딩 할까?? 그럼 화면에서 정상적인 동작이 이뤄지지 않을 수도 있다.(예를 들어 모션은 들어 갔는데 이미지는 아직 로딩이 안되는 상태에서 이미지를 구할려고 한다면.. 더보기
[Anroid] 라운딩된 ImageView 만들기 기본적으로 가장 이해하기 쉬운 방법은 두개의 뷰를 겹쳐서 나중에 그려지는 이미지를 배경색깔과 동일하게 하는 방법이 있습니다. 하지만, 위 방법은 배경 색깔이 단일할때만 가능합니다. 아래 사이트에 정말 좋은 샘플이 있어 공유 합니다. Drawable 자체를 타원형태로 그리는 샘플 소스 입니다. http://www.kmshack.kr/2013/07/%ED%9A%A8%EC%9C%A8%EC%A0%81%EC%9D%B8-bitmap-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EB%9D%BC%EC%9A%B4%EB%94%A9-%EC%B2%98%EB%A6%AC%EB%B0%A9%EB%B2%95/ 안드로이드의 Drawable을 이용해서 이미지가 draw될때 이미지를 라운딩 처리해서 그리는 방법이다. public c.. 더보기
[ Android ] Camera 캡쳐된 화면 보여주기. 이번에 Camera 연동 부분이 있어 조사를 좀 했습니다.조사 해본 결과 첫번째 캡쳐된 이미지를 가져오는 방법이 mCamera.setPreviewCallback(new Camera.PreviewCallback() {public void onPreviewFrame(byte[] data, Camera camera) {Camera.Parameters params = mCamera.getParameters(); int w = params.getPreviewSize().width; int h = params.getPreviewSize().height; int format = params.getPreviewFormat(); YuvImage image = new YuvImage(data, format, w, h, n.. 더보기
[Android Opengl es 2.0 ] Texture Setting. /// // Load texture from resource // private int loadTexture ( InputStream is ,int texId) { /* * Create our texture. This has to be done each time the * surface is created. */ int[] textures = new int[1]; if(texId == 0) GLES20.glGenTextures(1, textures, 0); else textures[0] = texId; int mTextureID = textures[0]; GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, mTextureID); GLES20.glTexParameterf(GLES2.. 더보기
[ Android Opengl es 2.0 ] LoadTexture 1.0에서는 Texture에 Bitmap 파일만 넣어주면, Android에서 알아서 바꿔주었었다. 아주 간편하게 Texture를 적용 시킬 수가 있었습니다. (안에서 어떻게 돌아가든 관계 없어..) 하지만, 2.0에서는 모든 것을 개발자에게 맡기게 되어있죠. 구글링을 해본 결과 , 안드로이드의 Bitmap 값은 ARGB로 32bit 픽셀로 되어 있다고 합니다. 하지만, Opengl은 RGBA로 되어 있어서 컨버팅 할 필요가 생긴거죠. 그래서 2.0에서는 glTexture2D 의 매개변수가 Buffer로 되어 있는 겁니다. 결과적으로 Texture에 Bitmap을 로드 시킬 때 다음과 같은 코드 형식으로 하면 되겠네요. private static int loadTexture(InputStream is) {.. 더보기
[ Android ] GridView를 사용할 때 getView에 대한 이해! 안녕하세요. 제가 이미지를 출력하는 GridView를 하다가 느낀 점을 적어볼까 합니다. 지금까지 전 GridView를 사용할 때 언제나, getView에 이미지만 출력해주면 다 되는거 아닌가?? 하는 식으로 BaseAdapter를 이용하여 마음 대로 View등을 리턴 시켰죠. 하지만, 제가 코딩을 해본 경험상! 무작정 마음대로 넘기는 형식이 아니더라구요. 특히, Scroll사용 시 이미지가 겹치거나 position에 맞지 않는 이미지가 나올 경우가 많아 Scroll이벤트와 함께 index를 억지로 맞춘 적이 많았습니다. 과연 이렇게 복잡하게 GridView사용하게 구글이 만들었을까요? 소스 두개를 보여드릴께요. public View getView(int position, View convertView,.. 더보기
[Android] Bitmap에 그림 그리기. 항상 drawLine이나 drawCircle같은 함수를 매번 추가해야 할 경우, 혹시 For문으로 돌리고 계시지는 않는 지요? 그럼 시스템적으로 부화도 많이 생기고, 느려지는 것을 느낄 수 있습니다. Canvas 자체적으로 다시 초기화를 하지 않고,겹쳐서 그릴 경우에는 그대로 계속 그리면 되지만, 다시 깨끗하게 화면을 초기화 하고 다시 출력할려고 하면 다시 그 수만큼 사용을 해야하죠. for(int i = 0 ; i < 100 ; i++) c.drawLine(0,0,100,100,paint); 위와 같은 코드로는 drawLine을 100번 출력하게 되는 대박 코딩이 되는 거죠-0-;; 그래서 지금까지 그린 것을 Bitmap에 저장시켜 놓은 후, 그것을 다시 호출해서 사용하면 drawBitmap함수를 한번.. 더보기