특정 이미지의 비트 맵 이미지를 만들고 싶지만 비트 맵 이미지의 너비와 높이에 저항하고 싶습니다. 내가 ......이미지를 비트 맵으로 변환
image2 = BitmapFactory.decodeResource(getResources(), rid);
Log.w("DEBUG","which is null:image i " + i.getWidth() + " OR " +i.getDrawable().getIntrinsicHeight());
Log.w("DEBUG","which is null:image h " + h.getWidth() + " OR " +h.getHeight());
Log.w("DEBUG","which is null:image2 " + image2.getWidth() + " OR " +image2.getHeight());
Bitmap image = Bitmap.createScaledBitmap(image2, i.getWidth(), i.getHeight(), false);
Log.w("DEBUG","which is null:image " + image.getWidth() + " OR " +image.getHeight());
double bmWidth = image.getWidth();
double bmHeight = image.getHeight();
if (x < 0 || y < 0 || x > getWidth() || y > getHeight()){
return 0; //Invalid, return 0
}else{
//Convert touched x, y on View to on Bitmap
int xBm = (int)(x * (bmWidth/getWidth()));
int yBm = (int)(y * (bmHeight/getHeight()));
return image.getPixel(xBm, yBm);
를 다음 코드를 사용하고 있지만, 그것은 나에게 동일한 출력을 반환하지 않습니다 ........ 그것은 나에게 같은 폭과 높이를 보여주는하지만 내 원하는 출력은 오지 마라. 내 원하는 출력 높이에 큰 ...... ...... 그래서 그것을 극복하는 방법. 하나는 편집 나에게
을 제안 아니 할 수 있습니다 스택 트레이스 ...
this.setDrawingCacheEnabled(true);
// this is the important code :)
// Without it the view will have a dimension of 0,0 and the bitmap will be null
this.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
this.layout(0, 0, this.getMeasuredWidth(), this.getMeasuredHeight());
this.buildDrawingCache(true);
Bitmap image = Bitmap.createBitmap(this.getDrawingCache());
this.setDrawingCacheEnabled(false);
//image2 = BitmapFactory.decodeResource(getResources(), rid);
Log.w("DEBUG","which is null:image i " + i.getWidth() + " OR " +i.getDrawable().getIntrinsicHeight());
Log.w("DEBUG","which is null:image h " + h.getWidth() + " OR " +h.getHeight());
Log.w("DEBUG","which is null:image2 " + image2.getWidth() + " OR " +image2.getHeight());
Log.w("DEBUG","which is null:image " + image.getWidth() + " OR " +image.getHeight());
double bmWidth = image.getWidth();
double bmHeight = image.getHeight();
if (x < 0 || y < 0 || x > getWidth() || y > getHeight()){
return 0; //Invalid, return 0
}else{
//Convert touched x, y on View to on Bitmap
int xBm = (int)(x * (bmWidth/getWidth()));
int yBm = (int)(y * (bmHeight/getHeight()));
return image.getPixel(xBm, yBm);
}
}
지금 나에게 널 포인터 예외를 보여주는 것은
05-29 15:22:07.205: E/AndroidRuntime(889): FATAL EXCEPTION: main
05-29 15:22:07.205: E/AndroidRuntime(889): java.lang.NullPointerException
05-29 15:22:07.205: E/AndroidRuntime(889): at android.graphics.Bitmap.createBitmap(Bitmap.java:358)
05-29 15:22:07.205: E/AndroidRuntime(889): at com.example.nam.ImageIn.getmaskPixel(ImageIn.java:60)
05-29 15:22:07.205: E/AndroidRuntime(889): at com.example.nam.AshActivity.getMaskColor(AshActivity.java:192)
05-29 15:22:07.205: E/AndroidRuntime(889): at com.example.nam.FirstImage.pageinfo(FirstImage.java:102)
05-29 15:22:07.205: E/AndroidRuntime(889): at com.example.nam.FirstImage.onTouch(FirstImage.java:65)
05-29 15:22:07.205: E/AndroidRuntime(889): at android.view.View.dispatchTouchEvent(View.java:3762)
05-29 15:22:07.205: E/AndroidRuntime(889): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
05-29 15:22:07.205: E/AndroidRuntime(889): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
05-29 15:22:07.205: E/AndroidRuntime(889): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
05-29 15:22:07.205: E/AndroidRuntime(889): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
05-29 15:22:07.205: E/AndroidRuntime(889): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
05-29 15:22:07.205: E/AndroidRuntime(889): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
05-29 15:22:07.205: E/AndroidRuntime(889): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
05-29 15:22:07.205: E/AndroidRuntime(889): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1671)
05-29 15:22:07.205: E/AndroidRuntime(889): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
05-29 15:22:07.205: E/AndroidRuntime(889): at android.app.Activity.dispatchTouchEvent(Activity.java:2086)
05-29 15:22:07.205: E/AndroidRuntime(889): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1655)
05-29 15:22:07.205: E/AndroidRuntime(889): at android.view.ViewRoot.handleMessage(ViewRoot.java:1785)
05-29 15:22:07.205: E/AndroidRuntime(889): at android.os.Handler.dispatchMessage(Handler.java:99)
05-29 15:22:07.205: E/AndroidRuntime(889): at android.os.Looper.loop(Looper.java:123)
05-29 15:22:07.205: E/AndroidRuntime(889): at android.app.ActivityThread.main(ActivityThread.java:4627)
05-29 15:22:07.205: E/AndroidRuntime(889): at java.lang.reflect.Method.invokeNative(Native Method)
05-29 15:22:07.205: E/AndroidRuntime(889): at java.lang.reflect.Method.invoke(Method.java:521)
05-29 15:22:07.205: E/AndroidRuntime(889): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
05-29 15:22:07.205: E/AndroidRuntime(889): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-29 15:22:07.205: E/AndroidRuntime(889): at dalvik.system.NativeStart.main(Native Method)
이 방법으로 문제가 있는지 확인 - http://stackoverflow.com/questions/8198291/bitmap-getwidth-returns-wrong-value – Shaiful
당신이에서 onCreate (안쪽이 직접 일을) 또는 클릭 이벤트에서? –
이벤트를 클릭하십시오 ..... – Ashishsingh