2012-12-27 5 views
5

Pour le programme que je suis en train d'écrire, je actuellement besoin d'un simple éditeur d'image. Essentiellement, l'utilisateur accède à cet éditeur en sélectionnant simplement une image dans une galerie. Lors de la sélection, l'activité de l'éditeur d'images est créée et devrait permettre à l'utilisateur d'effectuer des actions d'édition simples comme la rotation, le réglage de la luminosité, le zoom, etc ...manipulons les bitmaps Image Editor

Pour l'instant j'ai réussi à mettre en œuvre la fonctionnalité susmentionnée avec une relative facilité. Mon problème réside dans l'ajout dynamique de l'image en question au ImageView. Comme beaucoup d'entre vous le savent peut-être; le tampon de transaction Binder a une taille fixe limitée, actuellement 1 Mo, qui est partagée par toutes les transactions en cours pour le processus. Ainsi, je suis seulement capable de charger des versions compressées de l'image bitmap dans mon ImageView et cela présente un problème assez important pour moi (mon programme est principalement conçu pour une utilisation sur des tablettes). Je l'ai fait des recherches importantes sur cette question et nous avons trouvé que l'on peut essentiellement diviser un Bitmap en plusieurs petits bitmaps et placez-les dans plusieurs ImageView pour créer l'illusion d'une image contiguë à l'aide BitmapRegionDecoder (comme l'a suggéré dans ce thread). Même si cela a permis avec succès me à afficher de grandes images Je ne sais pas comment je suis censé implémenter la fonctionnalité de zoom à l'aide de plusieurs instances ImageView. Y a-t-il un moyen relativement simple de faire cela?

Répondre

3

Jetez un oeil à ce video from Google I/O où ils développent une application de galerie avancée avec retouche d'image.

Vous pouvez télécharger le code source de l'application here. C'est ainsi qu'il ouvre l'activité pour l'édition d'image:

private OnItemClickListener mPhotoClickListener = new OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     // User clicked on photo, open our viewer 
     final Intent intent = new Intent(AlbumActivity.this, PhotoActivity.class); 
     final Uri data = ContentUris.withAppendedId(
       MediaStore.Images.Media.EXTERNAL_CONTENT_URI, id); 
     intent.setData(data); 
     startActivity(intent); 
    } 
}; 

La galerie met également en œuvre la fonctionnalité d'édition d'image. Le code pourrait être utile.

3

Avez-vous essayé cela? options.inJustDecodeBounds doit être défini sur true.

BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inJustDecodeBounds = true; 
BitmapFactory.decodeResource(getResources(), R.id.myimage, options); 
int imageHeight = options.outHeight; 
int imageWidth = options.outWidth; 
String imageType = options.outMimeType; 

http://developer.android.com/training/displaying-bitmaps/load-bitmap.html