mirror of
https://github.com/tesseract-ocr/tesseract.git
synced 2024-12-23 23:17:49 +08:00
d1e4f27acb
git-svn-id: https://tesseract-ocr.googlecode.com/svn/trunk@1033 d0cd1f9f-072b-0410-8dd7-cf729c803f20
75 lines
2.6 KiB
Java
75 lines
2.6 KiB
Java
// Copyright 2007 Google Inc. All Rights Reserved.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License"); You may not
|
|
// use this file except in compliance with the License. You may obtain a copy of
|
|
// the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
|
|
// applicable law or agreed to in writing, software distributed under the
|
|
// License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
|
// OF ANY KIND, either express or implied. See the License for the specific
|
|
// language governing permissions and limitations under the License.
|
|
|
|
package com.google.scrollview.ui;
|
|
|
|
import org.piccolo2d.nodes.PImage;
|
|
|
|
import java.io.BufferedReader;
|
|
import java.io.ByteArrayInputStream;
|
|
import java.io.IOException;
|
|
import javax.imageio.ImageIO;
|
|
import javax.xml.bind.DatatypeConverter;
|
|
|
|
/**
|
|
* The ScrollViewImageHandler is a helper class which takes care of image
|
|
* processing. It is used to construct an Image from the message-stream and
|
|
* basically consists of a number of utility functions to process the input
|
|
* stream.
|
|
*
|
|
* @author wanke@google.com
|
|
*/
|
|
public class SVImageHandler {
|
|
/* All methods are static, so we forbid to construct SVImageHandler objects */
|
|
private SVImageHandler() {
|
|
}
|
|
|
|
/**
|
|
* Reads size bytes from the stream in and interprets it as an image file,
|
|
* encoded as png, and then text-encoded as base 64, returning the decoded
|
|
* bitmap.
|
|
*
|
|
* @param size The size of the image file.
|
|
* @param in The input stream from which to read the bytes.
|
|
*/
|
|
public static PImage readImage(int size, BufferedReader in) {
|
|
char[] charbuffer = new char[size];
|
|
int numRead = 0;
|
|
while (numRead < size) {
|
|
int newRead = -1;
|
|
try {
|
|
newRead = in.read(charbuffer, numRead, size - numRead);
|
|
} catch (IOException e) {
|
|
System.out.println("Failed to read image data from socket:" + e.getMessage());
|
|
return null;
|
|
}
|
|
if (newRead < 0) {
|
|
return null;
|
|
}
|
|
numRead += newRead;
|
|
}
|
|
if (numRead != size) {
|
|
System.out.println("Failed to read image data from socket");
|
|
return null;
|
|
}
|
|
// Convert the character data to binary.
|
|
byte[] binarydata = DatatypeConverter.parseBase64Binary(new String(charbuffer));
|
|
// Convert the binary data to a byte stream and parse to image.
|
|
ByteArrayInputStream byteStream = new ByteArrayInputStream(binarydata);
|
|
try {
|
|
PImage img = new PImage(ImageIO.read(byteStream));
|
|
return img;
|
|
} catch (IOException e) {
|
|
System.out.println("Failed to decode image data from socket" + e.getMessage());
|
|
}
|
|
return null;
|
|
}
|
|
}
|