5

对于我目前正在编写的程序,我需要一个简单的图像编辑器。本质上,用户只需从图库中选择图像即可导航到此编辑器。选择后,将创建图像编辑器活动,并应允许用户执行简单的编辑操作,例如旋转、亮度调整、缩放等。

目前,我已经设法相对轻松地实现了上述功能。我的问题在于将有问题的图像动态添加到ImageView. 你们中的许多人可能都知道;Binder 事务缓冲区有一个有限的固定大小,目前为 1Mb,由进程正在进行的所有事务共享。因此,我只能将位图的压缩版本加载到我的 ImageView 中,这对我来说是一个相当大的问题(我的程序主要设计用于平板电脑)。我对这个问题进行了大量研究,发现基本上可以将一个位图拆分为几个较小的位图,并将它们放在几个 ImageView 中,以创建一个连续图像的错觉BitmapRegionDecoder(如this thread中所建议的))。虽然这成功地允许我显示大图像,但我不知道应该如何使用多个ImageView. 有没有一种相对简单的方法可以做到这一点?

4

2 回答 2

3

观看来自 Google I/O的这段视频,他们在其中开发了具有图像编辑功能的高级图库应用。

您可以在此处下载应用程序的源代码。这是它打开图像编辑活动的方式:

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

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

于 2012-12-27T16:03:55.857 回答
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

于 2012-12-27T17:03:12.480 回答