如何在用 Delphi 编写的 Android 应用程序中读取 JPG EXIF 数据?
How to read JPG EXIF data in Android app written with Delphi?
我需要使用 Android 应用程序(从相机或从图库)拍照并检查其 EXIF 日期时间(以及其他几个属性)。我已成功实现接收 JPG 图像并将其加载到 TStream 和 GUI Image 组件中。但是我在提取 EXIF 数据时遇到问题。
我尝试了以下代码(它的变体可在 Internet 上找到):
procedure ReadEXIF(aPath: string);
var
LEXIF: JExifInterface;
LDateTaken: string;
begin
// Path looks like:
// /data/data/com.embarcadero.SimpleLogin/cache/IMG_20190305_085250104151537.jpg
LEXIF := TJExifInterface.JavaClass.init(StringToJString(aPath));
LDateTaken := JStringToString(LEXIF.getAttribute(TJExifInterface.JavaClass.TAG_DATETIME));
Log.d(LDateTaken);
end;
但是 returns "Raw image not detected" 错误。
如何读取 EXIF 数据?
P.S。尝试了 CCR-EXIF 库,但它不会针对 FMX 进行编译(其代码中有太多 Ansi 引用)。
P.P.S。我已经验证接收到的图像有 EXIF 数据(将它从流保存到其他位置并检查)
我能够使用以下低级代码读取 EXIF(将一些杂散字符更改为字节以使其编译并适用于 Android/FMX):http://www.bvbcode.com/code/37ghxe42-1643402
ex := TExif.Create;
ex.ReadFromFile(aPath);
Log.d('DateTime: %s', [ex.DateTime]);
ex.Free;
此处提供另一种工作方法:https://github.com/DelphiWorlds/KastriFree/tree/master/Demos/ObtainPhotoInfoDemo
该演示基本上告诉 OS 拍照并将其保存在指定的文件名下。稍后该文件名可用于提取 EXIF 信息。
我需要使用 Android 应用程序(从相机或从图库)拍照并检查其 EXIF 日期时间(以及其他几个属性)。我已成功实现接收 JPG 图像并将其加载到 TStream 和 GUI Image 组件中。但是我在提取 EXIF 数据时遇到问题。
我尝试了以下代码(它的变体可在 Internet 上找到):
procedure ReadEXIF(aPath: string);
var
LEXIF: JExifInterface;
LDateTaken: string;
begin
// Path looks like:
// /data/data/com.embarcadero.SimpleLogin/cache/IMG_20190305_085250104151537.jpg
LEXIF := TJExifInterface.JavaClass.init(StringToJString(aPath));
LDateTaken := JStringToString(LEXIF.getAttribute(TJExifInterface.JavaClass.TAG_DATETIME));
Log.d(LDateTaken);
end;
但是 returns "Raw image not detected" 错误。
如何读取 EXIF 数据?
P.S。尝试了 CCR-EXIF 库,但它不会针对 FMX 进行编译(其代码中有太多 Ansi 引用)。
P.P.S。我已经验证接收到的图像有 EXIF 数据(将它从流保存到其他位置并检查)
我能够使用以下低级代码读取 EXIF(将一些杂散字符更改为字节以使其编译并适用于 Android/FMX):http://www.bvbcode.com/code/37ghxe42-1643402
ex := TExif.Create;
ex.ReadFromFile(aPath);
Log.d('DateTime: %s', [ex.DateTime]);
ex.Free;
此处提供另一种工作方法:https://github.com/DelphiWorlds/KastriFree/tree/master/Demos/ObtainPhotoInfoDemo 该演示基本上告诉 OS 拍照并将其保存在指定的文件名下。稍后该文件名可用于提取 EXIF 信息。