【Android Studio相机使用原图,而非缩略图】

  1. 添加全局变量
public static final int PHOTO_REQUEST_CAREMA = 2022;
public static final String PICTURE_FILE = "temp.jpg";
  1. 调用相机并存储
Intent camintent = new Intent("android.media.action.IMAGE_CAPTURE");
Uri imageUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), PICTURE_FILE));
camintent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
// 开启一个带有返回值的Activity,请求码为PHOTO_REQUEST_CAREMA
startActivityForResult(camintent, PHOTO_REQUEST_CAREMA);
  1. 回调

    // 回调
    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode != RESULT_OK) {
            return;
        }
        if (requestCode == PHOTO_REQUEST_CAREMA) {// 拍照
            Bitmap bmp = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()
                    + "/" + PICTURE_FILE);
            imgOcr.setImageBitmap(bmp);
        }
    }
  1. 给予权限

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.CAMERA"/>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以通过在相机预览图上绘制矩形框来实现在 Android Studio 中的相机预览界面中画框的效果。以下是一个简单的实现示例: 1. 首先,确保你的项目中已经添加了相机权限和相机预览相关的依赖。 2. 在布局文件中添加一个 SurfaceView 用于显示相机预览图像: ```xml <SurfaceView android:id="@+id/camera_preview" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` 3. 在活动或者片段中获取 SurfaceView 的引用,并在相机预览回调方法中绘制矩形框: ```java public class CameraPreviewActivity extends AppCompatActivity implements SurfaceHolder.Callback { private Camera mCamera; private SurfaceView mPreview; private SurfaceHolder mHolder; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_camera_preview); mPreview = findViewById(R.id.camera_preview); mHolder = mPreview.getHolder(); mHolder.addCallback(this); } @Override public void surfaceCreated(SurfaceHolder holder) { mCamera = Camera.open(); try { mCamera.setPreviewDisplay(holder); mCamera.startPreview(); } catch (IOException e) { e.printStackTrace(); } } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { // 在此处获取相机预览图像的尺寸,并计算出矩形框的位置和大小 int left = width / 4; int top = height / 4; int right = width * 3 / 4; int bottom = height * 3 / 4; // 绘制矩形框 Canvas canvas = holder.lockCanvas(); Paint paint = new Paint(); paint.setStyle(Paint.Style.STROKE); paint.setColor(Color.RED); paint.setStrokeWidth(5); canvas.drawRect(left, top, right, bottom, paint); holder.unlockCanvasAndPost(canvas); } @Override public void surfaceDestroyed(SurfaceHolder holder) { mCamera.stopPreview(); mCamera.release(); } } ``` 在 `surfaceChanged()` 方法中,你可以根据实际需求计算出矩形框的位置和大小,并使用 `Canvas` 对象绘制矩形框。在这个示例中,矩形框的位置是相对于相机预览图像的宽高的四分之一和四分之三。 记得在 AndroidManifest.xml 文件中添加相机权限: ```xml <uses-permission android:name="android.permission.CAMERA" /> ``` 这样,当你运行应用时,你会在相机预览界面中看到一个红色的矩形框。你可以根据需要自定义矩形框的样式和位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值