Я пытаюсь создать на Java просмотрщик своих фотографий, в том числе в формате RAW (NEF).
Мне удалось подключить libraw.dll используя JNA. При этом я получаю доступ к функциям библиотеки versionNumber(), cameraList()... Функция libraw_init(0) возвращает объект моего класса libRawDataT, который соответствует структуре libraw_data_t библиотеки libraw.dll.
Но при попытке открыть NEF-файл система сообщает об ошибке LIBRAW_IO_ERROR (-100009). Помогите, пожалуйста определить в чем проблема.
--------------------- Текст тестовой программы: --------------------------
package ru.mi16.test.jna;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.win32.W32APIFunctionMapper;
import com.sun.jna.win32.W32APITypeMapper;
public class ReadRaw {
public interface LibRaw extends Library {
final static Map WIN32API_OPTIONS = new HashMap() {
private static final long serialVersionUID = 1L;
{
put(Library.OPTION_FUNCTION_MAPPER,W32APIFunctionMapper.UNICODE);
put(Library.OPTION_TYPE_MAPPER,W32APITypeMapper.UNICODE);
}
};
//-----------------------------------------------------------------
LibRaw INSTANCE = (LibRaw)Native.loadLibrary("src/lib/libraw",LibRaw.class,WIN32API_OPTIONS);
LibRawDataT libraw_init(int flags);
int libraw_open_file(LibRawDataT libRawDataT,String fName);
String[] libraw_cameraList();
int libraw_versionNumber();
}
//-----------------------------------------------------------------
public static void main(String[] args) {
LibRaw libRaw = LibRaw.INSTANCE;
int verNo = libRaw.libraw_versionNumber();
String[] aCam = LibRaw.INSTANCE.libraw_cameraList();
int err = -65536;
LibRawDataT libRawDataT = libRaw.libraw_init(0);
if (libRawDataT!=null) {
// Чтобы убедиться, что файл виден программе
File file = new File("F:\\Phog\\img\\tmp\\D70_080329_0387.nef");
if (file.canRead())
err = libRaw.libraw_open_file(libRawDataT,"F:\\Phog\\img\\tmp\\D70_080329_0387.nef");
}
System.out.println("Version number: "+verNo);
System.out.println("Camera[0]: "+aCam[0]);
System.out.println("\nerr = "+err);
}
}
-----------------------------------------------------------------------------------------
--------------------- Вывод тестовой программы: ------------------------
Version number: 3840
Camera[0]: Adobe Digital Negative (DNG)
err = -100009
-----------------------------------------------------------------------------------------
Благодарю, Михаил
А тестовые программы из