我有这个班级,我拍照并保存没有问题。如果可能的话<我希望在拍摄照片后添加裁剪功能。我做了一些研究,但我找不到我需要的东西。我不明白如何保存裁剪的图像。我看到了一些例子,但没有人给出我想要的答案。所有这些都只是拍照,裁剪,并在ImageView中显示。
public class TakePicture extends Activity {
private static final String TAG = "CallCamera";
private static final int CAPTURE_IMAGE_ACTIVITY_REQ = 0;
private Uri fileUri = null;
private ImageView photoImage = null;
private String fileName = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File file = getOutputPhotoFile();
fileUri = Uri.fromFile(getOutputPhotoFile());
i.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
startActivityForResult(i,
Constantes.CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
}
private File getOutputPhotoFile() {
File directory = new File(
Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
getString(R.string.app_name));
if (!directory.exists()) {
if (!directory.mkdirs()) {
Log.e(TAG, "Failed to create storage directory.");
return null;
}
}
String timeStamp = new SimpleDateFormat("yyyMMdd_HHmmss")
.format(new Date());
fileName = "IMG_" + timeStamp + ".jpg";
return new File(directory.getPath() + File.separator + fileName);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == Constantes.CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {
if (resultCode == RESULT_OK) {
Uri photoUri = null;
if (data == null) {
photoUri = fileUri;
setDataPhoto(photoUri);
} else {
photoUri = data.getData();
setDataPhoto(photoUri);
}
}
finish();
}
}
private void setDataPhoto(Uri photoUri) {
String filePath = photoUri.getPath();
fileName = filePath.substring(filePath.lastIndexOf(File.separator) + 1);
Intent intent = new Intent();
intent.putExtra(Constantes.IMAGE_PATH, filePath);
intent.putExtra(Constantes.IMAGE_NAME, fileName);
setResult(Activity.RESULT_OK, intent);
finish();
}
}
答案 0 :(得分:0)
您应该使用Bitmap。您可以使用BitmapFactory轻松地将照片转换为Bitmap。它可以从文件路径,字节数组等创建位图。看看BitmapFactory。
然后你可以按照你想要的方式裁剪它。将照片转换为位图后,必须使用该方法;
Bitmap dest=Bitmap.createBitmap(Bitmap source, int x, int y, int width, int height);
这里x和y是起点的坐标,即左下角的部分。请注意,您输入的宽度和高度不能大于原始位图的尺寸。