comment définir l'image de sortie utiliser com.android.de la caméra.d'action.CULTURE
J'ai le code pour rogner une image, comme ceci :
public void doCrop(){
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setType("image/");
List<ResolveInfo> list = getPackageManager().queryIntentActivities(intent,0);
int size = list.size();
if (size == 0 ){
Toast.makeText(this, "Cant find crop app").show();
return;
} else{
intent.setData(selectImageUri);
intent.putExtra("outputX", 300);
intent.putExtra("outputY", 300);
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("scale", true);
intent.putExtra("return-data", true);
if (size == 1) {
Intent i = new Intent(intent);
ResolveInfo res = list.get(0);
i.setComponent(new ComponentName(res.activityInfo.packageName, res.activityInfo.name));
startActivityForResult(i, CROP_RESULT);
}
}
}
public void onActivityResult (int requestCode, int resultCode, Intent dara){
if (resultCode == RESULT_OK){
if (requestCode == CROP_RESULT){
Bundle extras = data.getExtras();
if (extras != null){
bmp = extras.getParcelable("data");
}
File f = new File(selectImageUri.getPath());
if (f.exists()) f.delete();
Intent inten3 = new Intent(this, tabActivity.class);
startActivity(inten3);
}
}
}
de ce que j'ai lu, le code intent.putExtra("outputX", 300); intent.putExtra("outputY", 300);
est utilisée pour définir la résolution de la culture de résultat, mais pourquoi je ne peux pas obtenir le résultat de la résolution de l'image higer que 300x300? lorsque j'ai mis le intent.putExtra("outputX", 800); intent.putExtra("outputY", 800);
la fonction de recadrage a pas de résultat ou de crash, de toute idée de cette situation?
le journal de chat dire "! ! ! MANQUÉ DE LIANT TRANSACTION ! ! !
juste une remarque:
hahaha ouais j'ai dû modifier mon code et passer le if (taille==1)
if (size==1)
sera paralyser votre application si plus d'une application qui offre la RÉCOLTE d'action est installé. J'aimerais sauter cette partie si j'étais vous. Aussi, pensez à utiliser le Intent#createChooser(..)
méthode au lieu de départ de la première composante, il pourrait ne pas être l'application préférée de l'utilisateur.hahaha ouais j'ai dû modifier mon code et passer le if (taille==1)
OriginalL'auteur adi.zean | 2012-10-06
Vous devez vous connecter pour publier un commentaire.
Que l'Intention ne fait pas partie du public de l'API Android et n'est pas garanti pour fonctionner sur tous les appareils. Il a été utilisé dans les versions antérieures d'android 1.x et 2.x mais il n'est pas plus utilisé et n'est pas recommandé. C'est probablement pourquoi il plante tout plus de l'endroit ou fonctionne mal.
Utiliser des méthodes comme
Bitmap.createBitmap(..)
ouBitmap.createScaledBitmap(..)
pour créer un redimensionnement ou la version recadrée de l'image d'origine. Ceux-ci font partie de l'API Android et sont garantis de travailler.Voir officiel docs ici et ici
Pour recadrer une image bitmap, vous pouvez utiliser
Bitmap.createBitmap(Bitmap, int x, int y, int width, int height)
. Par exemple, si vous avez besoin de recadrer 10 pixels de chaque côté d'une image bitmap puis utilisez ceci:Si vous avez besoin d'afficher le sélecteur pour l'utilisateur. Ensuite, vous pouvez faire quelque chose comme ceci:
code de ici
J'ai mis à jour ma réponse, vous pouvez utiliser le code que j'ai posté à créer une zone de sélection à l'aide d'une intention qui va appeler n'importe quelle application, l'utilisateur a la possibilité de rogner l'image. Ensuite, vous pouvez récupérer l'image recadrée et définissez-la comme illustré.
ouais j'ai essayé le code et de son travail, mais encore une question, puis-je obtenir le cordinate de la place? je souhaite modifier le ori bitmap, et de remplacer le croped image d'ori bitmap dans le même endroit..
hmm.. bon alors,, 😀 merci avant, vous vraiment m'aider... 😀
OriginalL'auteur Anup Cowkur