gpt4 book ai didi

android - 如何使用大位图。旋转并插入画廊

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:08:54 26 4
gpt4 key购买 nike

我需要用相机拍照,如果根据图片大小,在将其保存到图库之前旋转它。

我在用

Intent imageCaptureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); imageCaptureIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri); startActivityForResult(imageCaptureIntent, IMAGE_CAPTURE);

拍摄照片并将其保存到临时文件。

然后

Bitmap bmp = BitmapFactory.decodeFile(imagePath);
String str = android.provider.MediaStore.Images.Media.insertImage(cr, bmp, name, description);

保存它。

这是我试图用来旋转位图的代码

Matrix matrix = new Matrix();
matrix.postRotate(180);
Bitmap x = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), matrix, true);
android.provider.MediaStore.Images.Media.insertImage(cr, x, name, description);

问题是我遇到了 OutOfMemoryException。

有没有更好的方法来处理位图以避免破坏内存?

~提前致谢,问候

最佳答案

我认为没有更好的方法来处理位图。您可以尝试将文件中的数据直接解析为 Byte[] 的一部分,然后分段操作;这很难,您最终可能会得到非常难看的代码。

我还建议如下:

  • 使用 android.provider.MediaStore.Images.Media.insertImage(cr, imagePath, name, description) 而不是 android.provider.MediaStore.Images.Media.insertImage (cr, bmp, name, description) 这样就不需要调用 Bitmap bmp = BitmapFactory.decodeFile(imagePath) 并且此时不会将位图加载到内存中。

  • 在整个代码中,确保除非需要,否则不会加载位图。将不再需要的位图设置为 null 并调用垃圾收集器,或使用 bmp.recycle()

关于android - 如何使用大位图。旋转并插入画廊,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2300019/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com