diff --git a/javase/src/main/java/com/google/zxing/client/j2se/DecodeWorker.java b/javase/src/main/java/com/google/zxing/client/j2se/DecodeWorker.java index 04d19244d..2370cd58c 100644 --- a/javase/src/main/java/com/google/zxing/client/j2se/DecodeWorker.java +++ b/javase/src/main/java/com/google/zxing/client/j2se/DecodeWorker.java @@ -165,6 +165,19 @@ final class DecodeWorker implements Callable { result.getText() + "\n" + "Parsed result:\n" + parsedResult.getDisplayResult() + "\n"); + + if (config.outputRaw) { + StringBuilder rawData = new StringBuilder(); + + for (byte b : result.getRawBytes()) { + rawData.append(String.format("%02X", b & 0xff)); + rawData.append(" "); + } + rawData.setLength(rawData.length() - 1); // chop off final space + + output.write("Raw bits:\n" + rawData.toString() + "\n"); + } + ResultPoint[] resultPoints = result.getResultPoints(); int numResultPoints = resultPoints.length; output.write("Found " + numResultPoints + " result points.\n"); diff --git a/javase/src/main/java/com/google/zxing/client/j2se/DecoderConfig.java b/javase/src/main/java/com/google/zxing/client/j2se/DecoderConfig.java index 93caf817e..48d5d6261 100644 --- a/javase/src/main/java/com/google/zxing/client/j2se/DecoderConfig.java +++ b/javase/src/main/java/com/google/zxing/client/j2se/DecoderConfig.java @@ -58,6 +58,10 @@ final class DecoderConfig { description = "Only output one line per file, omitting the contents") boolean brief; + @Parameter(names = "--raw", + description = "Output raw bitstream, before decoding symbols") + boolean outputRaw; + @Parameter(names = "--recursive", description = "Descend into subdirectories") boolean recursive;