2016-10-02 69 views
0

我目前在我的应用程序内部创建了一个Android相机,但是,我在Surfaceview(拍摄图像之前)和拍摄的图像上看到的图像略有不同,因为拍摄的图像被裁剪出。相机预览不同于位图

这里是图像预览拍摄图像前: https://drive.google.com/file/d/0B4vL9wnJulKocGF1ejJxX1c5Qms/view?usp=sharing

,这里是拍摄的图像: https://drive.google.com/file/d/0B4vL9wnJulKoUWREYngxWFk3aXc/view?usp=sharing

这里是相机预览

<RelativeLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:adjustViewBounds="true" 
    android:id="@+id/camera_preview" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true"> 
</RelativeLayout> 

这里的XML文件是捕获图像的XML文件:

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:adjustViewBounds="true" 
    android:id="@+id/capturedImageHolder" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" /> 

任何人都可以帮忙吗? 谢谢

回答

0

没有合约拍摄的图像将与预览完全相同。实际上,相机在预览和拍摄过程中会做不同的工作:前者针对速度和电池进行了优化,后者针对图像质量进行了优化。但是,有一些方法可以使它们更相似。

首先,确保所选预览尺寸的纵横比与图片尺寸的纵横比相同。如果您选择相同尺寸的预览和图片,则可能会进一步提高结果(请注意,这通常意味着您获得的分辨率相对较低)。

这仍然不能保证图像将完美匹配,因为捕捉可能涉及,对焦和也有一些延迟,这意味着场景会改变。

您可以尝试保持预览为焦点并在捕获时冻结焦点。我相信这需要调整您的特定设备(支持哪些对焦模式等)以获得最佳效果。

最后,你可以简单地使用最新的预览图像来存储图片,而不是做“捕捉”。这将产生最佳匹配,但图像质量可能会更差。

+1

我考虑到了你所说的并实施了一些建议,现在我的图像预览捕获的图像相当准确。谢谢 – BadCodersHub

0

推测,预览分辨率和图片分辨率是不同的。这并不罕见;实际上,没有要求设备在预览和图片之间提供任何相同的分辨率。