我正在为自定义 Android 设备开发应用程序。目前仍处于开发早期阶段,相机可能会与设备的其余部分物理旋转 90 度。这意味着它拍摄的任何图像的肖像和风景之间都存在很大的混淆。出于这个原因,我希望对相机拍摄的任何图像中的 Exif 数据进行绝对控制。相机参数中的纵向与横向信息可能不正确。出于这个原因,我希望能够在保存图像之前强制更改 onPictureTaken 内的 Exif 数据。这可能吗?如果可能的话,如何实现?
我很挣扎,因为使用 exif 数据的示例似乎要么通过更改相机参数来工作,要么通过处理已保存的文件来工作 - 所以这要么太早,要么太晚!
public void onPictureTaken(byte[] jpg_data, Camera camera)
{
// can I change exif data here?
try
{
FileOutputStream buf = new FileOutputStream(filename);
buf.write(jpg_data);
//... etc.
编辑:也许我在这里误解了一些东西...传递给 onPictureTaken 的 jpg_data 中是否已包含 Exif 数据?还是选择性添加的?
最佳答案
在 Android 中写入 exif 数据的标准方法是使用 ExifInterface,遗憾的是该方法仅适用于已写入磁盘的文件。
如果您希望在不使用库的情况下进行 exif 写入,那么您必须在 FileOutputStream
完成文件写入后执行此操作。
如果您不介意使用库,Sanselan ( http://commons.apache.org/proper/commons-imaging/ ) 可能能够对 byte[] 数组执行此操作,但文档非常有限。
关于android - 在 onPictureTaken 和 write() 之间更改 "Exif"数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25610784/