如何使用带有图像的相机?
How to use the camera with images?
我想制作一个包含图像和背景的应用程序,您可以使用设备相机。我知道如何启动相机,但不知道如何将图像向前移动。这个应用程序就是一个例子:
https://play.google.com/store/apps/details?id=com.kat.police.photosuit.montage
有人知道解释如何操作的教程或一些代码吗?
我找了没找到,可能是我英文不太好吧。提前致谢
我认为您的解决方案不应该是重叠图像。我认为您正在寻找的东西更复杂。你应该拥有两张图片,然后编写一个算法将它们混合起来,并在你的 imageView 上只显示一张图片。
请检查这个例子:
http://examples.javacodegeeks.com/android/core/ui/surfaceview/android-surfaceview-example/
并使用此布局activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.javacodegeeks.androidsurfaceviewexample.AndroidSurfaceviewExample" >
<SurfaceView
android:id="@+id/surfaceView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/police"
android:layout_above="@id/capture"/>
<LinearLayout
android:id="@+id/capture"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="true"
android:background="@android:color/white"
android:gravity="center"
android:layout_alignParentBottom="true"
android:onClick="captureImage"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="10dp"
android:text="Capture"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
</RelativeLayout>
在您的 surfaceCreated 方法中,您需要执行如下操作:
Camera.Parameters parameters = camera.getParameters();
List<Camera.Size> previewSizes = parameters.getPreviewSizes();
// You need to choose the most appropriate previewSize for your app
// Example Camera.Size previewSize = previewSizes.get(0);
Camera.Size previewSize = // .... select one of previewSizes here
parameters.setPreviewSize(previewSize.width, previewSize.height);
camera.setParameters(parameters);
camera.startPreview();
我想制作一个包含图像和背景的应用程序,您可以使用设备相机。我知道如何启动相机,但不知道如何将图像向前移动。这个应用程序就是一个例子:
https://play.google.com/store/apps/details?id=com.kat.police.photosuit.montage
有人知道解释如何操作的教程或一些代码吗?
我找了没找到,可能是我英文不太好吧。提前致谢
我认为您的解决方案不应该是重叠图像。我认为您正在寻找的东西更复杂。你应该拥有两张图片,然后编写一个算法将它们混合起来,并在你的 imageView 上只显示一张图片。
请检查这个例子:
http://examples.javacodegeeks.com/android/core/ui/surfaceview/android-surfaceview-example/
并使用此布局activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.javacodegeeks.androidsurfaceviewexample.AndroidSurfaceviewExample" >
<SurfaceView
android:id="@+id/surfaceView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/police"
android:layout_above="@id/capture"/>
<LinearLayout
android:id="@+id/capture"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="true"
android:background="@android:color/white"
android:gravity="center"
android:layout_alignParentBottom="true"
android:onClick="captureImage"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="10dp"
android:text="Capture"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
</RelativeLayout>
在您的 surfaceCreated 方法中,您需要执行如下操作:
Camera.Parameters parameters = camera.getParameters();
List<Camera.Size> previewSizes = parameters.getPreviewSizes();
// You need to choose the most appropriate previewSize for your app
// Example Camera.Size previewSize = previewSizes.get(0);
Camera.Size previewSize = // .... select one of previewSizes here
parameters.setPreviewSize(previewSize.width, previewSize.height);
camera.setParameters(parameters);
camera.startPreview();