I want to create a bitmap image of particular image but i want to resist the width and height of the bitmapimage. i am using the following code ......
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);
but it is not returning me the same output ........it is showing me the same width and height but my desired output is not coming. in my desired output height is get large ......so how to overcome that. can nay one suggest me
edited :
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);
}
}
now it is showing me null pointer exception... stacktrace
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)