OPK*_*OPK 0 java png jpeg image
我不确定我到底在做什么,所以请给出一些建议并原谅我的错误.
我有一个byte[]调用的图像idCardImage,我做了以下操作将其转换为字符串:
String s = new String(idCardImage);
Run Code Online (Sandbox Code Playgroud)
它打印出来像这样:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAEHUlEQVQ4TzWUW49VRRCFv6rq3ufMmTNn....
Run Code Online (Sandbox Code Playgroud)
做了一些在线搜索,似乎这个图像是png基于64编码的格式.
我需要做的是将其转换为jpeg格式,然后将其存储在新的字节数组中.你能就如何用Java做一些建议吗?
您可以使用ImageIO解释器来转换java中的图像.它允许读取图像数据,就像将图像数据写入指定格式一样.它需要InputStream读取图像数据.因为你有一个byte[]你可以ByteArrayInputStream轻松创建.
ImageIO需要OutputStream写一个字节数据.并且还ByteArrayOutputStream允许提取它byte[].因此,您可以将图像字节写入a ByteArrayOutputStream并返回其字节.
考虑以下示例
public byte[] pngBytesToJpgBytes(byte[] pngBytes) throws IOException {
//create InputStream for ImageIO using png byte[]
ByteArrayInputStream bais = new ByteArrayInputStream(pngBytes);
//read png bytes as an image
BufferedImage bufferedImage = ImageIO.read(bais);
//create OutputStream to write prepaired jpg bytes
ByteArrayOutputStream baos = new ByteArrayOutputStream();
//write image as jpg bytes
ImageIO.write(bufferedImage, "JPG", baos);
//convert OutputStream to a byte[]
return baos.toByteArray();
}
Run Code Online (Sandbox Code Playgroud)