从相机裁剪图像并保存
Posted
技术标签:
【中文标题】从相机裁剪图像并保存【英文标题】:Crop image from camera and save it 【发布时间】:2014-10-23 14:41:35 【问题描述】:我有这门课,我可以拍照并毫无问题地保存它。如果可能
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();
【问题讨论】:
您可能会发现 crop image intent 很有用。请参阅简短的tutorial,其中捕获和裁剪意图协同工作。 【参考方案1】:您应该使用位图。您可以使用 BitmapFactory 轻松地将您的照片转换为位图。它可以从文件路径、字节数组等创建位图。看看BitmapFactory。
然后你可以按照你想要的方式裁剪它。将照片转换为位图后,必须使用该方法;
Bitmap dest=Bitmap.createBitmap(Bitmap source, int x, int y, int width, int height);
这里 x 和 y 是起点的坐标,也就是左下角的部分。注意输入的宽度和高度不能大于原始位图的尺寸。
【讨论】:
以上是关于从相机裁剪图像并保存的主要内容,如果未能解决你的问题,请参考以下文章