- InputStream is = item.getInputStream();
- try {
- processStream(is, response);
- } finally {
- is.close();
- }
- } else {
- throw new ServletException("File is too large: " + item.getSize());
- }
- break;
- }
- }
- } catch (FileUploadException fue) {
- response.sendRedirect("badimage.jspx");
- }
-
- }
-
- private static void processStream(InputStream is, HttpServletResponse response) throws IOException {
- BufferedImage image = ImageIO.read(is);
- if (image == null) {
- response.sendRedirect("badimage.jspx");
- return;
- }
-
- Reader reader = new MultiFormatReader();
- Result result;
- try {
- result = reader.decode(new BufferedImageMonochromeBitmapSource(image), HINTS);
- } catch (ReaderException re) {
- log.info("DECODE FAILED: " + re.toString());
- response.sendRedirect("notfound.jspx");
- return;
- }
-
- response.setContentType("text/plain");
- response.setCharacterEncoding("UTF-8");
- Writer out = new OutputStreamWriter(response.getOutputStream(), "UTF-8");
- try {
- out.write(result.getText());
- } finally {
- out.close();
- }
- }
-
- private static boolean isSizeOK(HttpMessage getResponse) {
+ InputStream is = item.getInputStream();
+ try {
+ processStream(is, request, response);
+ } finally {
+ is.close();
+ }
+ } else {
+ response.sendRedirect("badimage.jspx");
+ }
+ break;
+ }
+ }
+ } catch (FileUploadException fue) {
+ response.sendRedirect("badimage.jspx");
+ }
+
+ }
+
+ private static void processStream(InputStream is, ServletRequest request,
+ HttpServletResponse response) throws ServletException, IOException {
+ BufferedImage image = ImageIO.read(is);
+ if (image == null) {
+ response.sendRedirect("badimage.jspx");
+ return;
+ }
+
+ Reader reader = new MultiFormatReader();
+ Result result;
+ try {
+ LuminanceSource source = new BufferedImageLuminanceSource(image);
+ BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
+ result = reader.decode(bitmap, HINTS);
+ } catch (ReaderException re) {
+ log.info("DECODE FAILED: " + re.toString());
+ response.sendRedirect("notfound.jspx");
+ return;
+ }
+
+ if (request.getParameter("full") == null) {
+ response.setContentType("text/plain");
+ response.setCharacterEncoding("UTF8");
+ Writer out = new OutputStreamWriter(response.getOutputStream(), "UTF8");
+ try {
+ out.write(result.getText());
+ } finally {
+ out.close();
+ }
+ } else {
+ request.setAttribute("result", result);
+ byte[] rawBytes = result.getRawBytes();
+ if (rawBytes != null) {
+ request.setAttribute("rawBytesString", arrayToString(rawBytes));
+ } else {
+ request.setAttribute("rawBytesString", "(Not applicable)");
+ }
+ String text = result.getText();
+ if (text != null) {
+ request.setAttribute("text", StringEscapeUtils.escapeXml(text));
+ } else {
+ request.setAttribute("text", "(Not applicable)");
+ }
+ ParsedResult parsedResult = ResultParser.parseResult(result);
+ request.setAttribute("parsedResult", parsedResult);
+ String displayResult = parsedResult.getDisplayResult();
+ if (displayResult != null) {
+ request.setAttribute("displayResult", StringEscapeUtils.escapeXml(displayResult));
+ } else {
+ request.setAttribute("displayResult", "(Not applicable)");
+ }
+ request.getRequestDispatcher("decoderesult.jspx").forward(request, response);
+ }
+ }
+
+ private static boolean isSizeOK(HttpMessage getResponse) {