本文共 1332 字,大约阅读时间需要 4 分钟。
我有一个从客户端获取字节数组的服务器端Java代码.为了进行一些图像处理,我需要将字节数组转换为BufferedImage.我有一个应该在这里执行的代码:
public void processImage(byte[] data) {
ByteArrayInputStream stream = new ByteArrayInputStream(data);
BufferedImage bufferedImage;
bufferedImage = ImageIO.read(stream);
// bufferedImage is null
//...
}
但这是行不通的. bufferedImage为null.根据ImageIO文档:
If no registered ImageReader claims to be able to read the resulting stream, null is returned.
我如何告诉ImageReader它是什么图像类型.例如,如果我知道图像是JPEG(在我的情况下就是JPEG),我应该怎么做?
编辑:感谢您的建议,该文件很可能不是JPEG格式.这是我拥有的客户端代码,用于将数据作为String发送到服务器:
import org.json.JSONObject;
// Client-side code that sends image to server as String
public void sendImage() {
FileInputStream inputStream = new FileInputStream(new File("myImage.jpg"));
ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
byte[] b = new byte[1024];
while ((bytesRead = inputStream.read(b)) != -1) {
byteStream.write(b,0,bytesRead);
}
byte[] byteArray = byteStream.toByteArray();
JSONObject jsonObject = new JSONObject();
jsonObject.put("data",new String(byteArray));
// ... more code here that sends jsonObject in HTTP post body
}
这是调用processImage()函数的服务器端代码:
// Server-side code that calls processImage() function
public void handleRequest(String jsonData) {
JSONObject jsonObject = new JSONObject(jsonData);
processImage(jsonObject.getString("data").getBytes());
}
转载地址:http://bftnx.baihongyu.com/