Я пишу графическое приложение, которое принимает изображение с камеры, используя пакет gphoto2 в Raspbian. Когда я gphoto2 --capture-image-and-download
команду gphoto2 --capture-image-and-download
в терминал, камера берет изображение и сохраняет его в текущей папке. Однако, когда я выполняю ту же команду с помощью кнопки в своем Java-коде, камера берет изображение, но оно не сохраняется. Перенаправленный вывод из bash говорит, что изображение сохраняется в камере (с которой я мог справиться), но изображение не сохраняется ни в камере, ни в текущем каталоге, на самом деле она не сохраняется вообще.
Вот код кнопки:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
Runtime com = getRuntime();
try {
//Reset USB Device to prevent warnings
Process mand = com.exec("../../../usbreset /dev/bus/usb/001/005");
//Capture image
Process get = com.exec("gphoto2 --capture-image-and-download");
Send Bash output(s) to text area
BufferedReader in1 = new BufferedReader(new InputStreamReader(mand.getInputStream()));
BufferedReader in2 = new BufferedReader(new InputStreamReader(get.getInputStream()));
String inputLine1;
while ((inputLine1 = in1.readLine()) != null) {
msgArea.append(inputLine1 + "\n");
}
in1.close();
String inputLine2;
while ((inputLine2 = in2.readLine()) != null) {
msgArea.append(inputLine2 + "\n");
}
in2.close();
} catch (IOException ex) {
Logger.getLogger(Home.class.getName()).log(Level.SEVERE, null, ex);
}
}
Я не могу решить, есть ли проблема в моих командах bash или моем Java-коде. Я пробовал как с картой, так и без нее, присутствующей в камере, и также попробовал с указанным именем файла для изображения, но безрезультатно. Я не уверен, что это важно, но Pi контролируется через PuTTY ssh с пересылкой X11 на ноутбуке Debian. Java написана в Netbeans 8. GPhoto2 - это версия 2.4.14, а камера - Canon EOS 1100D, хотя я подозреваю, что этот последний факт является излишним для требований.
Я был бы очень благодарен, если бы кто-нибудь мог помочь - это важная часть моего проекта в прошлом году в университете, поэтому я должен быть в состоянии получить его отсортированным в ближайшее время!
Заранее спасибо,
парень
Хорошо, я ответил на свой вопрос.
Выход из bash был отправлен только до момента, когда была сделана фотография. После этого вывод терминала не отправлялся, и поэтому у меня не было ошибки, связанной с разрешением отказа. Таким образом, решение было просто добавить sudo
перед командой gphoto2
. Простое решение в конце, но разочаровывающая ситуация!