我有一个Android应用程序我正在开发,但我已经面临将图像路径转换为字节的问题。我有一个用于匹配图像的C库,我想将图像从sqlite传递到库中,以便图像可以与其他图像匹配,这是我从sqlite接收图像路径的代码块:
private byte matdata[] = new byte[512];
for (Multimedia multdata : multimedialist) {
String log = "Id: " + multdata.getID() + " ,FID: "
+ multdata.getFID() + " ,PATH: " + multdata.getPath();
String imagePath = multdata.getPath();
clibrary.GetTemplateByGen(matdata, matsize);
mret = clibrary.MatchTemplate(refdata, refsize[0], matdata, matsize[0]);
Log.i("MATCH" ,""+mret);
Log.i("PATH" ,""+multdata.getPath());
}
根据上面的代码块,我需要将String imagePath
的值转换为new byte[512]
,以便我可以clibrary.GetTemplateByGen(matdata, matsize);
将其传递给clibrary.GetTemplateByGen("BYTES PASSED AFTER IMAGEPATH CONVERTED TO BYTES[512]", matsize);
我试图将路径转换为位图,然后转换为字节,如下所示:
Bitmap bitmap = decodeImg(imagePath, 150, 150);
final int lnth=bitmap.getByteCount();
ByteBuffer dst= ByteBuffer.allocate(lnth);
bitmap.copyPixelsToBuffer( dst);
byte[] bytearray=dst.array();
}public static Bitmap decodeImg(String path, int reqWidth, int reqHeight) {
File file = new File(path);
if (file.exists()) {
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(path, options);'
options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);
options.inJustDecodeBounds = false;
return BitmapFactory.decodeFile(path, options);
} else
return null;
}`
但是库仍然无法对形成的字节数组执行匹配。 任何人都可以协助,因为我花了很多时间来解决这个问题,提前谢谢