renotm Posté(e) 6 juillet 2010 Share Posté(e) 6 juillet 2010 Bonjour, Je suis en train de réaliser une petite application permettant de manipuler les images. J'ai essayé de réaliser un activity permettant de lister les images afin d'en sélectionner une pour la manipuler mais dès que le nombre d'image est trop important j'ai des problèmes de performance assez prononcés. Je pourrais essayer de régler ces problèmes mais j'ai remarqué que certaines application avaient contournées ce problème en ouvrant un menu proposant des programmes faisant déjà ce travail. J'aime cette solution mais je tourne en rond sans trouver comment cela fonctionne. J'ai essayé en utilisant Intent i = new Intent( Intent.ACTION_ATTACH_DATA ); startActivity( Intent.createChooser( i, "Select :" ) ); mais je pense être sur une mauvaise piste, donc si quelqu'un à la solution ou au moins une bonne piste je le remercie d'avance. Lien vers le commentaire Partager sur d’autres sites More sharing options...
renotm Posté(e) 6 juillet 2010 Auteur Share Posté(e) 6 juillet 2010 bon, je suis allé un peu vite pour poster j'ai trouvé la solution que je donne si ca peut aider d'autres : Intent i = new Intent( Intent.ACTION_GET_CONTENT ); i.setType("image/*"); startActivityForResult(i, 1); Lien vers le commentaire Partager sur d’autres sites More sharing options...
Nivek Posté(e) 6 juillet 2010 Share Posté(e) 6 juillet 2010 Si tu veux un exemple d'implémentation d'un image chooser "perso" (avec sélection multiple), tu peux toujours essayer de regarder ce que j'ai fait sur EmailAlbum : http://code.google.com/p/emailalbum/source/browse/#svn/EmailAlbumAndroid/tags/REL-2_7_0/src/com/kg/emailalbum/mobile/creator Les aspects performances sont effectivement assez délicats, alors je te conseille d'avoir une boite d'aspirine à portée de main ;-) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Nivek Posté(e) 6 juillet 2010 Share Posté(e) 6 juillet 2010 Pour l'image chooser "standard" de la gallerie, tu peux faire appel à une Intent.ACTION_PICK en fournissant comme Data : Media.INTERNAL_CONTENT_URI ou Media.EXTERNAL_CONTENT_URI. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Pierre87 Posté(e) 6 juillet 2010 Share Posté(e) 6 juillet 2010 Voilà pour moi : Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); this.startActivityForResult(intent, REQUEST_CODE_SELECT_PICTURE); Lien vers le commentaire Partager sur d’autres sites More sharing options...
Pierre87 Posté(e) 6 juillet 2010 Share Posté(e) 6 juillet 2010 et le plus important, dans le onActivityResult : else if (requestCode == REQUEST_CODE_SELECT_PICTURE) { if (resultCode == RESULT_OK) { Uri uri = data.getData(); if (uri != null) { try { Bitmap bm = BitmapFactory.decodeStream(this.getContentResolver().openInputStream(uri)); this.setBitmap(bm); } catch (FileNotFoundException e) { e.printStackTrace(); } } } } } Lien vers le commentaire Partager sur d’autres sites More sharing options...
FlorentCode Posté(e) 9 septembre 2010 Share Posté(e) 9 septembre 2010 Bonsoir Pierre87 :) , Je tente de faire un pick d'une image dans ma galerie et de l'afficher dans une ImageView en aperçu. J'ai donc fait: i = new Intent(Intent.ACTION_PICK); i.setType(MediaStore.Images.Media.CONTENT_TYPE); ((ImageButton)findViewById(R.id.buttonMyspace)).setOnClickListener(new OnClickListener(){ public void onClick(View v) { startActivityForResult(i, REQUEST_CODE_SELECT_PICTURE); } }); Ensuite: @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE_SELECT_PICTURE) { if (resultCode == RESULT_OK) { Uri uri = data.getData(); if (uri != null) { try { Bitmap bm = BitmapFactory.decodeStream(this.getContentResolver().openInputStream(uri)); ImageView face = ((ImageView)findViewById(R.id.profilpic)); face.setImageBitmap(bm); } catch (FileNotFoundException e) { e.printStackTrace(); } } } } } Probléme: J'ai testé sur le device, ça marche en déclaré mon ImageView à 100px en width et 100px en height MAIS le problème c'est que les images sont rectangulaires, il y a des "fermeture soudaine de l'application"sur quelques une, je ne sais pas trop pourquoi... Le top ce serait de choisir une zone carré dans l'image (comme sur l'app Twitter) et d'afficher toujours le même carré ou alors de forcer l'ImageView à afficher un carré. Vous savez comment on peut procéder? Une autre question: Puis-je utiliser un ImageButton à la place de l'ImageView et modifier le drawableBackground au lieu de faire un setImage ? Si oui, quelle fonction faut-il utiliser? Merci de m'éclairer, Florent Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.