【发布时间】:2013-04-30 19:00:26
【问题描述】:
我的团队正在为使用立体摄像头的 HTC 手机开发一款应用。为了进行处理,我们要求 3D 相机拍摄的静止图像为 MPO 格式。默认情况下,它返回 JPS 图像。
如何让相机返回 MPO 图像?有没有地方记录了这一点?
我在 HTC 网站上花了一段时间,但无法找到可能有帮助的 API 或相机应用程序的源代码(因为他们的相机应用程序可以处理 MPO 文件)。
【问题讨论】:
我的团队正在为使用立体摄像头的 HTC 手机开发一款应用。为了进行处理,我们要求 3D 相机拍摄的静止图像为 MPO 格式。默认情况下,它返回 JPS 图像。
如何让相机返回 MPO 图像?有没有地方记录了这一点?
我在 HTC 网站上花了一段时间,但无法找到可能有帮助的 API 或相机应用程序的源代码(因为他们的相机应用程序可以处理 MPO 文件)。
【问题讨论】:
我不知道这方面的 API,但自己动手做起来很简单。 JPS 格式只是一个图像,左半部分是一个相机,右半部分是另一个。所以第一步只需将其转换为两个单独的图像。从它创建新的位图,两边都有矩形:
http://developer.android.com/reference/android/graphics/Bitmap.html#createBitmap(android.graphics.Bitmap,%20int,%20int,%20int,%20int,%20android.graphics.Matrix,%20boolean)
MPO 格式只是一个文件中的两个 JPG 图像,一个接一个。所以接下来使用compress方式将两张JPG图片写入同一个文件输出流:
http://developer.android.com/reference/android/graphics/Bitmap.html#compress(android.graphics.Bitmap.CompressFormat,%20int,%20java.io.OutputStream)
你可以在网上找到很多用于裁剪图像并将其保存为 JPG 的 Android 示例代码,这几乎是你所需要的。
【讨论】:
MPO 格式不只是
两个 JPG 图像在一个文件中,一个接一个。
http://www.cipa.jp/english/hyoujunka/kikaku/pdf/DC-007_E.pdf Camera and Image Processing Association's Standard Development Working Group, Multi-Picture Format Sub-Working Group 2009-02-04 标准的英文翻译。
https://www.htcdev.com/devcenter/opensense-sdk/stereoscopic-3d/s3d-sample-code/ 展示了一些使用 HTC EVO 3D 相机的示例代码。
【讨论】: