如何在裁剪意图期间旋转图像

时间:2014-04-18 10:34:01

标签: android camera rotation surfaceview preview

这里有一些老帖子,但事情似乎已经发生了变化。昨天我得到了a straightforward way to crop an image using an intent的答案。问题的第二部分是向预览添加旋转功能。有谁知道我如何添加此功能?如果它相当复杂,有没有人知道那里有一个例子?

3 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,并使用了这种解决方法。调用的Intent使用URI,而大多数旋转解决方案使用Bitmap。所以我做的是:

  1. 从URI

    中检索位图

    Bitmap bmCameraCapture = BitmapFactory.decodeFile(Uri.fromFile(photo).getPath());

    照片是您在触发相机意图时定义的新文件。

  2. 旋转位图

  3. 获取旋转位图的URI,我使用了here
  4. 中的代码
    public Uri getImageUri(Context inContext, Bitmap inImage) {
        ByteArrayOutputStream bytes = new ByteArrayOutputStream();
        inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
        String path = Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title",null);
        return Uri.parse(path);
    }
    

    4。根据此新URI

    触发裁剪意图

    我假设你错过了第1步& 3并且知道如何做其他两个。

答案 1 :(得分:0)

尝试使用它来实现旋转

Bitmap bMap = BitmapFactory.decodeResource(getResources(),R.drawable.test);
Matrix mat = new Matrix();
mat.postRotate(90);
Bitmap bMapRotate = Bitmap.createBitmap(bMap, 0, 0,
bMap.getWidth(), bMap.getHeight(), mat, true);
BitmapDrawable bmd = new BitmapDrawable(bMapRotate);
image.setImageBitmap(bMapRotate);
image.setImageDrawable(bmd);

希望有所帮助

答案 2 :(得分:0)

https://github.com/KyoSherlock/CropView

您可以查看此CropLayout。

裁剪具有平移,缩放和旋转的大照片(无失真和OOM)。