从具有未知编码的字符串反序列化图像

时间:2015-10-21 14:09:56

标签: java serialization deserialization

我有一组序列化图像,我想反序列化。数据如下所示:

GIF89ax\000\364\001\367\000\000\000\000\000\001\001\001\002\002\002\003\003\003\004\004\004\005\005\005\006\006\006\a\a\a\b\b\b\t\t\t\n\n\n\v\v\v\f\f\f\r\r\ ...

由于数据隐私,我无法发布完整图片。我很难找出这是什么样的编码。现在,我正在努力找到一个将其转换为Java中的BufferedImage

1 个答案:

答案 0 :(得分:0)

事实证明,图像是使用Google-Protocoll Buffer TextFormat序列化的。所以正确转换代码的代码是

import com.google.protobuf.ByteString;
import com.google.protobuf.TextFormat;

String imgStr = "GIF89ax\000\364\001\367\000\000\000\000\000\001\001\001\002\002\002\003\003\003\004\004\004\005\005\005\006\006\006\a\a\a\b\b\b\t\t\t\n\n\n\v\v\v\f\f\f\r\r\ ..."; // must an full image string
ByteString unescapeBytes = TextFormat.unescapeBytes(imgStr);
byte[] bytes = new byte[unescapeBytes.size()];
unescapeBytes.copyTo(bytes, 0);

final BufferedOutputStream bw = new BufferedOutputStream(new FileOutputStream("result.gif"));
bw.write(bytes);
bw.close();

多数民众赞成。