Convertir une image bitmap
Je veux créer une image bitmap de l'image en particulier, mais je veux résister à la largeur et la hauteur de la bitmapimage. je suis en utilisant le code suivant ......
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);
mais il n'est pas de retour moi la même sortie ........il me montre la même largeur et la hauteur, mais mon choix de sortie n'est pas venue. dans mon choix de sortie de la hauteur est d'obtenir de grandes ......alors, comment surmonter cela. peut nay on me suggérer
édité :
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);
}
}
maintenant, il me montre exception de pointeur null...
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)
Vérifiez si c'est votre problème - stackoverflow.com/questions/8198291/...
- vous directement à l'intérieur de onCreate (), ou dans tout événement de clic?
cliquez sur l'événement .....
- vous directement à l'intérieur de onCreate (), ou dans tout événement de clic?
cliquez sur l'événement .....
OriginalL'auteur Ashishsingh | 2012-05-29
Vous devez vous connecter pour publier un commentaire.
Vous pouvez simplement utiliser l'imageView de l'image cache. Il va rendre la totalité de la vue comme il est jeté dehors (mise à l'échelle,bordé de fond, etc) à un nouveau bitmap.
et peut-être cela:
Plus
ou la forme sdcard image bitmap
_lovers il m'indique l'erreur ....j'ai mis à jour que
OriginalL'auteur
Si je vous comprends vous voulez créer une échelle d'image bitmap à partir d'un autre.Ci-dessous est un extrait de code qui va vous permettre de redimensionner une image Bitmap.
Simplement de saisie de l'objet Bitmap d'origine et les dimensions de l'image, et cette méthode sera de retour pour vous le nouveau redimensionnée Bitmap!
Pour obtenir les valeurs des pixels de touché point
L'Utilisation De Bitmap.getPixel(int x, int y) sur votre objet bitmap. Il vous renverra la valeur int de l'endroit où vous devrez prendre distincts a,r,g,b valeurs de décalage de bits vers la droite:
vous souhaitez redimensionner une image bitmap est que ce que vous voulez?*
en gros, dans cette fonction, je veux que whnen de l'utilisateur sur ce pixel, alors il devrait retourner la couleur du pixel....mais quand je les convertir en bitmap puis c'est la hauteur est d'obtenir de grandes, mais la largeur est normal .
voir mise à jour de réponse
je sais qu'mais l'image bitmap est convertie, elle ne me fournit pas correct de la valeur et de l'image bitmap est converti correctement .......
OriginalL'auteur K_Anas
Avez-vous essayer de désactiver l'auto-échelle?
OriginalL'auteur John