如何将字符串转换为图像(Java)

时间:2012-02-11 12:05:39

标签: java string image

我的应用程序有一个问题。   - 我有一个java servlet从mms网关接收数据(MM7协议) 我得到输入流(图像内容,消息内容)转换为字符串

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
//String orgin = new String(byteArrayOutputStream.toByteArray(),"UTF-8");
String orgin = Streams.asString(request.getInputStream(), "ISO-8859-1");

然后我将图像内容的子字符串orgin转换为base64并保存到图像文件 但我转换为base64的字符串无法保存到图像,因为此错误

not a jpeg file 

我打印出来的字符串base64不以/ 9j开头,这意味着不是jpg格式

请为我建议或举例

最佳要求

lieang noob noob

抱歉我的英语:)

4 个答案:

答案 0 :(得分:2)

这至少是你问题的一部分:

String orgin = Streams.asString(request.getInputStream(), "ISO-8859-1");

您不应该将其转换为字符串以开始。这是二进制数据,对吗?所以从流中读取作为二进制数据

现在听起来你基本上想要获得二进制数据的单独“块” - 但将数据转换为字符串格式开头是不适合,除非二进制数据确实是编码的文本。

答案 1 :(得分:0)

答案 2 :(得分:0)

图像编码非常简单。

编码来源:

    Bitmap bm = BitmapFactory.decodeFile(picturePath);
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            bm.compress(Bitmap.CompressFormat.JPEG, 100, baos);
            byte[] byteArray = baos.toByteArray();

            encodedImage = Base64.encodeToString(byteArray, Base64.DEFAULT);

    ImageView imageView = (ImageView) findViewById(R.id.imageView1);
            imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath));

解码来源:

    byte[] decodedString;
        decodedString = Base64.decode(picture, Base64.DEFAULT);

        imageView1.setImageBitmap( BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length));

答案 3 :(得分:0)

使用以下代码作为String to Image 这里“origin”是一个String

import org.apache.commons.codec.binary.Base64;


byte[] imgByteArray = Base64.decodeBase64(origin);
FileOutputStream imgOutFile = new FileOutputStream("C:\\Workspaces\\String_To_Image.jpg");
imgOutFile.write(imgByteArray);
imgOutFile.close();