|
10 | 10 | import com.datazuul.bookscanner.core.devices.CameraFactory;
|
11 | 11 | import com.datazuul.bookscanner.core.workers.CaptureAndSaveWorker;
|
12 | 12 | import java.awt.Adjustable;
|
13 |
| -import java.awt.Color; |
14 | 13 | import java.awt.Component;
|
15 | 14 | import java.awt.event.AdjustmentEvent;
|
16 | 15 | import java.awt.event.AdjustmentListener;
|
17 | 16 | import java.awt.image.BufferedImage;
|
18 | 17 | import java.io.File;
|
| 18 | +import java.util.ArrayList; |
19 | 19 | import java.util.Collection;
|
| 20 | +import java.util.Iterator; |
| 21 | +import java.util.List; |
20 | 22 | import java.util.logging.Level;
|
21 | 23 | import java.util.logging.Logger;
|
| 24 | +import javax.imageio.ImageIO; |
| 25 | +import javax.imageio.ImageWriter; |
| 26 | +import javax.swing.DefaultComboBoxModel; |
22 | 27 | import javax.swing.JScrollBar;
|
23 | 28 | import javax.swing.JScrollPane;
|
24 | 29 | import javax.usb.UsbDisconnectedException;
|
@@ -52,6 +57,16 @@ public ThumbnailsAndScanPanel() {
|
52 | 57 | initCameras();
|
53 | 58 | targetDirectory = System.getProperty("user.home"); // default
|
54 | 59 | projectDirectoryPathLabel.setText(targetDirectory);
|
| 60 | + |
| 61 | + String[] formatNames = new String[]{"jpg", "tif", "png"}; |
| 62 | + List<String> supportedFormatNames = new ArrayList<>(); |
| 63 | + for (String formatName : formatNames) { |
| 64 | + Iterator<ImageWriter> imageWritersByFormatName = ImageIO.getImageWritersByFormatName(formatName); |
| 65 | + if (imageWritersByFormatName.hasNext()) { |
| 66 | + supportedFormatNames.add(formatName); |
| 67 | + } |
| 68 | + } |
| 69 | + formatNamesDropdown.setModel(new DefaultComboBoxModel(supportedFormatNames.toArray())); |
55 | 70 |
|
56 | 71 | if (cam1 != null && cam2 != null) {
|
57 | 72 | leftCamera = cam1;
|
@@ -154,6 +169,7 @@ private void initComponents() {
|
154 | 169 | projectDirectoryLabel = new javax.swing.JLabel();
|
155 | 170 | chooseDirectory = new javax.swing.JButton();
|
156 | 171 | projectDirectoryPathLabel = new javax.swing.JLabel();
|
| 172 | + formatNamesDropdown = new javax.swing.JComboBox<>(); |
157 | 173 | setupModeCheckbox = new javax.swing.JCheckBox();
|
158 | 174 | thumbnailsScrollPane = new javax.swing.JScrollPane();
|
159 | 175 | thumbnailsContainerPanel = new javax.swing.JPanel();
|
@@ -190,10 +206,13 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
|
190 | 206 | projectDirectoryPathLabel.setPreferredSize(new java.awt.Dimension(500, 20));
|
191 | 207 | directoryPanel.add(projectDirectoryPathLabel);
|
192 | 208 |
|
| 209 | + directoryPanel.add(formatNamesDropdown); |
| 210 | + |
193 | 211 | setupModeCheckbox.setBackground(new java.awt.Color(255, 255, 0));
|
194 | 212 | setupModeCheckbox.setSelected(true);
|
195 | 213 | setupModeCheckbox.setText("Setup Mode");
|
196 | 214 | setupModeCheckbox.setToolTipText("uncheck to start saving images into project folder");
|
| 215 | + setupModeCheckbox.setAlignmentX(1.0F); |
197 | 216 | setupModeCheckbox.addChangeListener(new javax.swing.event.ChangeListener() {
|
198 | 217 | public void stateChanged(javax.swing.event.ChangeEvent evt) {
|
199 | 218 | setupModeCheckboxStateChanged(evt);
|
@@ -345,6 +364,7 @@ private void setupModeCheckboxStateChanged(javax.swing.event.ChangeEvent evt) {/
|
345 | 364 | private javax.swing.JButton chooseDirectory;
|
346 | 365 | private javax.swing.JPanel directoryPanel;
|
347 | 366 | private javax.swing.JButton exchangeScanPanelsBtn;
|
| 367 | + private javax.swing.JComboBox<String> formatNamesDropdown; |
348 | 368 | private com.datazuul.bookscanner.core.ScanPanel leftScanPanel;
|
349 | 369 | private javax.swing.JPanel middlePanel;
|
350 | 370 | private javax.swing.JLabel projectDirectoryLabel;
|
@@ -375,8 +395,9 @@ private void shoot() {
|
375 | 395 | // create new thumbnailPanel to be filled
|
376 | 396 | ThumbnailsPanel thumbnailsPanel = new ThumbnailsPanel();
|
377 | 397 |
|
378 |
| - String imageFormat = "png"; |
379 |
| - String filenameExtension = ".png"; |
| 398 | + String selectedFormat = (String) formatNamesDropdown.getSelectedItem(); |
| 399 | + String imageFormat = selectedFormat; |
| 400 | + String filenameExtension = "." + selectedFormat; |
380 | 401 | String leftFilename = "image-" + StringUtils.leftPad(String.valueOf(leftNumber), 5, '0') + filenameExtension;
|
381 | 402 | String rightFilename = "image-" + StringUtils.leftPad(String.valueOf(rightNumber), 5, '0') + filenameExtension;
|
382 | 403 |
|
|
0 commit comments