我正在尝试使用DigitalPersona SDK v 3.0.0比较Java中的两个指纹,但是我选择FMD是无效错误,或者有时我得到一个或多个传递给API调用的参数无效。
我有一个从Javascript API获取的png图像,我试图先创建一个FID,然后再创建一个FDM,如本文所述
example
但是我不知道如何获取方法参数:inDpi,fingerPosition,cbeffId,outDpi和rotate180以获取fid
Fid fid = UareUGlobal.getImporter()。ImportRaw(rawPixels,
宽度,高度,inDpi,fingerPosition,cbeffId,
Fid.Format.ANSI_381_2004,outDpi,rotate180);
我也尝试使用中间格式的ImportFmd失败
任何帮助将不胜感激
最佳答案
好吧,我目前也在研究那个。 UareU SDK V3.0.0,
但是我对“验证和比较”功能有疑问。
但是,要回答您的问题,如果您有指纹图像,
您可以将图像直接导入Fmd
。我的意思是(我使用ISO标准):Fmd fmd = UareUGlobal.GetEngine().CreateFmd(bInput, 500, 550, 700, 0, 0, Fmd.Format.ISO_19794_2_2005)
然后,您可以直接使用compare
进行verify
或fmd
。
注意:必须根据您的图像和阅读器更改高度,分辨率。cbeffid
参数,我尝试了0和1。如果有人找到了该参数的正确答案,请也建议我。
CBEFF
错误
通常,我发现分辨率,指纹格式和手指位置参数正确。指纹参数,我通常设置为0(第一指或第一 View )
更新
如果您使用的是javascript
。我建议您先将base64字符串从javascript转换为bufferedImage
。
public static Fmd importImageString(String image) throws UnsupportedEncodingException, IOException, UareUException {
byte[] bytes = Base64.getDecoder().decode(image.getBytes("UTF-8"));
if (null != bytes && bytes.length > 0) {
ByteArrayInputStream stream = new ByteArrayInputStream(bytes);
BufferedImage buf = ImageIO.read(stream);
if (null != buf) {
return UareUGlobal.GetEngine().CreateFmd(
TestDPuareU.toBytes(buf),
buf.getWidth(),
buf.getHeight(),
500, 0, 1, Fmd.Format.ISO_19794_2_2005
);
}
}
return null;
}
public static byte[] toBytes(BufferedImage image) throws IOException {
WritableRaster raster = image.getRaster();
DataBufferByte data = (DataBufferByte) raster.getDataBuffer();
return (data.getData());
}
我从javascript(
image
)var finger
中获得的sdk.onSamplesAcquired = function (s)
如下所示var samples = JSON.parse(s.samples);
var finger = Fingerprint.b64UrlTo64(samples[0])