实现拍照+裁剪或使用预制的意图?(Implement a Take Picture + Crop o

2019-09-02 02:09发布

我在一个Android应用程序,它拍照,它作物和做一些额外的东西的中间。 我希望做我自己的种植制度 ,但是当我在不同的地方测试问题就来了。 图片显示在某些情况下旋转,而在其他不正确裁剪(像他们周围有余量(看到原始照片的额外空间)左右)。

更多关于这一点, 我已经使用意图考虑 。 这将释放我从拍照疯狂,裁剪,并会增加一个有趣的“摆脱库”选项,我还没有实现。 作物意图可能无法在每一个Android的 (因为它带有香草相机应用程序,某些设备根本没有的话),所以外部库应该是我的路了。

但是,我用的作物采取的方式和照片是“自动”,即:单一按钮了一个正方形图片(从相机的方观点),同时被裁剪(和一些后期处理过),而不发出的用户,我已经看到不工作的方式作物库(他们打开一个新的活动)。

现在问题来了: 它会更好离开工作意图(和/或外部库),并重新考虑应用程序的逻辑,还是坚持目前的代码,并为他们出现(在某些旋转做边缘的情况下修改设备,而不能在其他作物不同,等等)?

PD:我知道这个问题可能不如发展,紧他人(有些人会说:不!行代码>无SO),但它确实是一件关系到编码一样,所以我觉得没有更好的地方问问吧。

Answer 1:

Facebook的和Instagram已成功用自己的库或第三方代码做了。 在已经在自己的种植库开始工作,我建议你把它所有的方式,模棱两可的案件,最佳化和变通方法将在那里,但毫无疑问,你会在控制。 例如,你所提到的定位问题可以这样处理:

orientationColumnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.ORIENTATION);     

cursor.getInt(orientationColumnIndex)
if(orient == 90 || orient == 180 || orient == 270 ){
  Matrix matrix = new Matrix();
  matrix.postRotate(orient);
  result = Bitmap.createBitmap(result, 0, 0, 4*screenWidth/15, 4*screenWidth/15, matrix, true);
}

使用裁剪默认的Android的意图,如你所说,心不是很可靠的广泛潜在用户群提供的应用程式。



Answer 2:

只是开源/第三方作物库的说明-你应该看看在源,并确保他们使用的不是农作物的意图 (例如,com.android.camera.action.CROP)作为CommonsWare这里所指出的,在他乐于助人博客文章: http://commonsware.com/blog/2013/01/23/no-android-does-not-have-crop-intent.html

我一直在GitHub上评估不同作物库/开源,其中一些正在使用的作物意图。

这当然,假定您关心修剪应在所有的Android设备工作:)



文章来源: Implement a Take Picture + Crop or use premade Intents?