2012-12-27 47 views
5

对于我目前正在写的程序大的位图,我需要一个简单的图像编辑器。基本上,用户只需从图库中选择图像,即可导航到此编辑器。一旦选择了图像编辑活动创建,并应允许用户进行简单的编辑操作,如旋转,亮度调节,变焦等处理的图像编辑器

当时我已经成功地实现了相对容易的上述功能的时刻。我的问题在于动态添加有问题的图像到ImageView。你们中许多人可能知道; Binder事务缓冲区具有有限的固定大小,当前为1Mb,由进程中的所有事务共享。因此,我只能将压缩版本的位图加载到我的ImageView中,这对我来说是一个相当大的问题(我的程序主要用于平板电脑)。我已经对这个问题进行了重要的研究,并发现可以将一个Bitmap分割成几个较小的位图,并将它们放置在多个ImageView中,以使用BitmapRegionDecoder(如thread中建议的)创建一个连续图像的错觉。虽然这成功地让我显示大图片我不知道我应该如何实现使用的ImageView多个实例缩放功能。是否有一个相对简单的方法去做这件事?

回答

3

看一看这个video from Google I/O他们开发具有图像编辑高级画廊的应用程序。

你可以下载源代码的应用程序here。这是它如何打开图像编辑活动:

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); 
    } 
}; 

该图库还实现图像编辑功能。代码可能会有所帮助。

3

您是否尝试过这个? options.inJustDecodeBounds应该设置为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