use of com.google.zxing.Result in project zxing by zxing.
the class DecodeServlet method processImage.
private static void processImage(BufferedImage image, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
LuminanceSource source = new BufferedImageLuminanceSource(image);
BinaryBitmap bitmap = new BinaryBitmap(new GlobalHistogramBinarizer(source));
Collection<Result> results = new ArrayList<>(1);
try {
Reader reader = new MultiFormatReader();
ReaderException savedException = null;
try {
// Look for multiple barcodes
MultipleBarcodeReader multiReader = new GenericMultipleBarcodeReader(reader);
Result[] theResults = multiReader.decodeMultiple(bitmap, HINTS);
if (theResults != null) {
results.addAll(Arrays.asList(theResults));
}
} catch (ReaderException re) {
savedException = re;
}
if (results.isEmpty()) {
try {
// Look for pure barcode
Result theResult = reader.decode(bitmap, HINTS_PURE);
if (theResult != null) {
results.add(theResult);
}
} catch (ReaderException re) {
savedException = re;
}
}
if (results.isEmpty()) {
try {
// Look for normal barcode in photo
Result theResult = reader.decode(bitmap, HINTS);
if (theResult != null) {
results.add(theResult);
}
} catch (ReaderException re) {
savedException = re;
}
}
if (results.isEmpty()) {
try {
// Try again with other binarizer
BinaryBitmap hybridBitmap = new BinaryBitmap(new HybridBinarizer(source));
Result theResult = reader.decode(hybridBitmap, HINTS);
if (theResult != null) {
results.add(theResult);
}
} catch (ReaderException re) {
savedException = re;
}
}
if (results.isEmpty()) {
try {
throw savedException == null ? NotFoundException.getNotFoundInstance() : savedException;
} catch (FormatException | ChecksumException e) {
log.info(e.toString());
errorResponse(request, response, "format");
} catch (ReaderException e) {
// Including NotFoundException
log.info(e.toString());
errorResponse(request, response, "notfound");
}
return;
}
} catch (RuntimeException re) {
// Call out unexpected errors in the log clearly
log.log(Level.WARNING, "Unexpected exception from library", re);
throw new ServletException(re);
}
String fullParameter = request.getParameter("full");
boolean minimalOutput = fullParameter != null && !Boolean.parseBoolean(fullParameter);
if (minimalOutput) {
response.setContentType(MediaType.PLAIN_TEXT_UTF_8.toString());
response.setCharacterEncoding(StandardCharsets.UTF_8.name());
try (Writer out = new OutputStreamWriter(response.getOutputStream(), StandardCharsets.UTF_8)) {
for (Result result : results) {
out.write(result.getText());
out.write('\n');
}
}
} else {
request.setAttribute("results", results);
request.getRequestDispatcher("decoderesult.jspx").forward(request, response);
}
}
use of com.google.zxing.Result in project zxing by zxing.
the class RSSExpandedStackedInternalTestCase method testDecodingRowByRow.
@Test
public void testDecodingRowByRow() throws Exception {
RSSExpandedReader rssExpandedReader = new RSSExpandedReader();
BinaryBitmap binaryMap = TestCaseUtil.getBinaryBitmap("src/test/resources/blackbox/rssexpandedstacked-2/1000.png");
int firstRowNumber = binaryMap.getHeight() / 3;
BitArray firstRow = binaryMap.getBlackRow(firstRowNumber, null);
try {
rssExpandedReader.decodeRow2pairs(firstRowNumber, firstRow);
fail(NotFoundException.class.getName() + " expected");
} catch (NotFoundException nfe) {
// ok
}
assertEquals(1, rssExpandedReader.getRows().size());
ExpandedRow firstExpandedRow = rssExpandedReader.getRows().get(0);
assertEquals(firstRowNumber, firstExpandedRow.getRowNumber());
assertEquals(2, firstExpandedRow.getPairs().size());
firstExpandedRow.getPairs().get(1).getFinderPattern().getStartEnd()[1] = 0;
int secondRowNumber = 2 * binaryMap.getHeight() / 3;
BitArray secondRow = binaryMap.getBlackRow(secondRowNumber, null);
secondRow.reverse();
List<ExpandedPair> totalPairs = rssExpandedReader.decodeRow2pairs(secondRowNumber, secondRow);
Result result = RSSExpandedReader.constructResult(totalPairs);
assertEquals("(01)98898765432106(3202)012345(15)991231", result.getText());
}
use of com.google.zxing.Result in project zxing by zxing.
the class RSSExpandedStackedInternalTestCase method testCompleteDecode.
@Test
public void testCompleteDecode() throws Exception {
OneDReader rssExpandedReader = new RSSExpandedReader();
BinaryBitmap binaryMap = TestCaseUtil.getBinaryBitmap("src/test/resources/blackbox/rssexpandedstacked-2/1000.png");
Result result = rssExpandedReader.decode(binaryMap);
assertEquals("(01)98898765432106(3202)012345(15)991231", result.getText());
}
use of com.google.zxing.Result in project zxing by zxing.
the class DecodeWorker method dumpResult.
private static void dumpResult(URI input, Result... results) throws IOException {
Collection<String> resultTexts = new ArrayList<>();
for (Result result : results) {
resultTexts.add(result.getText());
}
Files.write(buildOutputPath(input, ".txt"), resultTexts, StandardCharsets.UTF_8);
}
use of com.google.zxing.Result in project zxing by zxing.
the class HistoryItemAdapter method getView.
@Override
public View getView(int position, View view, ViewGroup viewGroup) {
View layout;
if (view instanceof LinearLayout) {
layout = view;
} else {
LayoutInflater factory = LayoutInflater.from(activity);
layout = factory.inflate(R.layout.history_list_item, viewGroup, false);
}
HistoryItem item = getItem(position);
Result result = item.getResult();
CharSequence title;
CharSequence detail;
if (result != null) {
title = result.getText();
detail = item.getDisplayAndDetails();
} else {
Resources resources = getContext().getResources();
title = resources.getString(R.string.history_empty);
detail = resources.getString(R.string.history_empty_detail);
}
((TextView) layout.findViewById(R.id.history_title)).setText(title);
((TextView) layout.findViewById(R.id.history_detail)).setText(detail);
return layout;
}
Aggregations