GPhoto2 Java сфотографировать
Я использовал этот lib https://github.com/mvmn/gphoto2-jna для доступа к своему Nikon. Предварительный просмотр у меня работает (предварительный просмотр в реальном времени и сохранение предварительного изображения на диск), но я застрял в захвате обычной фотографии и сохранении ее на диск. Я думаю, что моя проблема - просто указатель, но так как я не работаю с этим, мне трудно разобраться в этой проблеме:D
Это код, который я сделал:
public void takePhoto() {
CameraFilePath captureImage = captureImage(_camera, _context);
PointerByReference pbRef = new PointerByReference(captureImage.getPointer());
byte[] cameraFileData = getCameraFileData(pbRef, _camera, _context); //from demo
BufferedImage image = ImageIO.read(new ByteArrayInputStream(cameraFileData));
//write image to disk
}
public static PointerByReference captureImage(Camera camera, PointerByReference context) {
CameraFilePath.ByReference cameraPath = new CameraFilePath.ByReference();
PointerByReference pbRef = new PointerByReference(cameraPath.getPointer());
{
check(Gphoto2Library.INSTANCE.gp_file_new(pbRef));
pbRef.setPointer(pbRef.getValue());
}
synchronized (LOCK_OBJECT_CAPTURE) {
check(Gphoto2Library.INSTANCE.gp_camera_capture(camera, 0, cameraPath, context));
}
return cameraPath;
}
public static byte[] getCameraFileData(PointerByReference cameraFile, Camera camera, PointerByReference context) {
PointerByReference pref = new PointerByReference();
LongByReference longByRef = new LongByReference();
int captureRes = check(Gphoto2Library.INSTANCE.gp_file_get_data_and_size(cameraFile, pref, longByRef));
if (captureRes >= 0) {
// throws NullPointer
return pref.getValue().getByteArray(0, (int) longByRef.getValue());
} else {
return null;
}
}
Пожалуйста, дайте мне знать, если у вас есть идеи, как решить эту проблему. Заранее спасибо!