代码之家  ›  专栏  ›  技术社区  ›  synic

图像裁剪活动/小部件

  •  1
  • synic  · 技术社区  · 14 年前

    在Android中有图像裁剪活动吗?我知道当你把一个图像保存为墙纸时,它会弹出一个图像裁剪器…我已经研究了它的源代码,但是它依赖于许多特定于图库的东西。不太可重复使用。

    有人知道这是怎么做到的吗,或者有没有第三方图书馆可以帮助我解决这个问题?

    2 回复  |  直到 11 年前
        1
  •  3
  •   Alex Lockwood Nigel Hawkins    12 年前

    有一个相当好的支持的意图(在至少六个不同的android 2.1+手机上进行了测试,包括senseui和motoblur设备,我相信它是从android 1.0或更早的g1开始出现的)。这可能会让你开始:

        final Intent intent = new Intent("com.android.camera.action.CROP");
        intent.setData(uriOfImageToCrop);
        intent.putExtra("outputX", 400);
        intent.putExtra("outputY", 400);
        intent.putExtra("aspectX", 1);
        intent.putExtra("aspectY", 1);
        intent.putExtra("scale", true);
        intent.putExtra("noFaceDetection", true);
        intent.putExtra("output", Uri.fromFile(someOutputFile));
        startActivityForResult(intent, SOME_RANDOM_REQUEST_CODE);
    

    然后,只需处理在活动的onActivityResult()方法中需要执行的操作;此时,输出文件中应该包含裁剪后的图像。

    注意:此代码使用内部API并将 在所有设备上工作 . 不过,为了安全起见,您可能希望有回退行为(autocrop?不要修剪?)如果某人的设备不支持此意图。

        2
  •  0
  •   voytez    11 年前

    不要忘记一个重要属性:

    intent.putExtra("scaleUpIfNeeded", true);
    

    如果你裁剪的照片小于你想要的输出,这一点至关重要。 如果不提供,则会在裁剪后的图像周围生成黑色边框。