2013-03-28 4 views
0

나는 페인트 응용 프로그램을 개발하고 나는 작물 기능을 삽입 할 내가 CanvasView에서이 코드를 사용하여 :비트 맵을 자르는 방법?

public void Crop() { 
    // TODO Auto-generated method stub 
    int value = 0; 
    if (bitmap.getHeight() <= bitmap.getWidth()) { 
     value = bitmap.getHeight(); 
    } else { 
     value = bitmap.getWidth(); 
    } 

    Bitmap finalBitmap = null; 
    finalBitmap = Bitmap.createBitmap(bitmap, 0, 0, value, value); 
    Bitmap lastBitmap = null; 
    lastBitmap = Bitmap.createScaledBitmap(finalBitmap, 144, 144, true); 

} 

을하지만이 오류가있는 라인이

03-28 03:10:18.365: E/AndroidRuntime(19708): FATAL EXCEPTION: main 
03-28 03:10:18.365: E/AndroidRuntime(19708): java.lang.NullPointerException 
03-28 03:10:18.365: E/AndroidRuntime(19708): at baked.soft.CanvasView.Crop(CanvasView.java:670) 
03-28 03:10:18.365: E/AndroidRuntime(19708): at baked.soft.FirstActivity$7.onClick(FirstActivity.java:157) 
03-28 03:10:18.365: E/AndroidRuntime(19708): at android.view.View.performClick(View.java:4232) 
03-28 03:10:18.365: E/AndroidRuntime(19708): at android.view.View$PerformClick.run(View.java:17318) 
03-28 03:10:18.365: E/AndroidRuntime(19708): at android.os.Handler.handleCallback(Handler.java:615) 
03-28 03:10:18.365: E/AndroidRuntime(19708): at android.os.Handler.dispatchMessage(Handler.java:92) 
03-28 03:10:18.365: E/AndroidRuntime(19708): at android.os.Looper.loop(Looper.java:137) 
03-28 03:10:18.365: E/AndroidRuntime(19708): at android.app.ActivityThread.main(ActivityThread.java:4921) 
03-28 03:10:18.365: E/AndroidRuntime(19708): at java.lang.reflect.Method.invokeNative(Native Method) 
03-28 03:10:18.365: E/AndroidRuntime(19708): at java.lang.reflect.Method.invoke(Method.java:511) 
03-28 03:10:18.365: E/AndroidRuntime(19708): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038) 
03-28 03:10:18.365: E/AndroidRuntime(19708): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805) 
03-28 03:10:18.365: E/AndroidRuntime(19708): at dalvik.system.NativeStart.main(Native Method) 

다음과 같은 오류를 받아 봐 :

012,342,832,732,927,854,211,768 FirstActivity

에서
if (bitmap.getHeight() <= bitmap.getWidth()) { 

비트 맵

+0

당신이 비트 맵 변수 선언 : 그런데


, 코드 더 다음과 같아야합니다 -/ –

답변

2

입력 bitmap이 null이므로 NullPoinerException입니다. 할

public void Crop() { 
    if(bitmap == null) { 
     return; 
    } 

    final int value; 
    if (bitmap.getHeight() <= bitmap.getWidth()) { 
     value = bitmap.getHeight(); 
    } else { 
     value = bitmap.getWidth(); 
    } 

    final Bitmap finalBitmap = Bitmap.createBitmap(bitmap, 0, 0, value, value); 
    final Bitmap lastBitmap = Bitmap.createScaledBitmap(finalBitmap, 144, 144, true); 
} 
+0

확인을하지만 내 비트 맵은'경우 (비트 맵에 대한 FirstActivity –

+1

확인에 생성됩니다 == null)''Crop()'에 보내거나'Crop()'에서 사용하기 전에. –

+0

'imageViewCrop = (ImageView) this.findViewById (R.id.imageViewCrop); imageViewCrop.setOnClickListener (새 OnClickListener를() { \t \t \t \t \t \t 공개 무효 온 클릭 (뷰 V) { \t \t \t \t 비트 맵 맵 = Bitmap.createBitmap (myView.getWidth() myView.getHeight() Config.ARGB_8888) \t \t \t \t 캔버스 캔버스 = 새로운 캔버스 (비트 맵) \t \t \t \t myView.draw (캔버스) \t 012,\t \t Toast.makeText (getApplicationContext(), "다시 실행 도구를 클릭 함", Toast.LENGTH_SHORT) .show(); \t \t \t \t myView.Crop(); \t \t \t \t \t bitmap.recycle(); \t \t \t} \t \t은});'이 –

관련 문제