Java 如何将BuffereImage正确转换为字节

Java 如何将BuffereImage正确转换为字节,java,bytearray,bufferedimage,Java,Bytearray,Bufferedimage,我用这个代码来转换它 ByteArrayOutputStream simpan = new ByteArrayOutputStream(); ImageIO.write((BufferedImage)image, "JPG", simpan); 但是当我试图显示simpan.toString时,结果是 当我把它转换成PNG像通过 ImageIO.write((BufferedImage)image, "PNG", simpan); 我知道了 这个条件正确吗?当我通过套接字将这些字节发送到an

我用这个代码来转换它

ByteArrayOutputStream simpan = new ByteArrayOutputStream();
ImageIO.write((BufferedImage)image, "JPG", simpan);
但是当我试图显示
simpan.toString
时,结果是

当我把它转换成PNG像通过

ImageIO.write((BufferedImage)image, "PNG", simpan);
我知道了


这个条件正确吗?当我通过套接字将这些字节发送到android手机时,手机上没有图像。

你需要将
ByteArrayOutputStream的内容写入一个具有适当扩展名的文件,然后用你的文件浏览器打开它。您现在正在做的是在文本控制台中输出JPEG或PNG图像的字节。

当我通过System.out.println()直接显示ByteArrayOutputstream时,不是得到了相同的结果吗?绝对不是:)打印将输出图像的字节,在操作系统中打开具有适当扩展名的文件时,会触发一个可视化程序的启动,该程序知道如何将这些字节转换为显示的像素。好的,我会尽快尝试@solendil。谢谢你一直试图回答我的问题。等待结果..哈哈..:)@ChristoforusSurjoputro,通过
System.out.println
写入字节,不仅会在末尾添加一个换行符,还会调用
ByteArrayOutputStream上的
toString
,将字节转换为使用默认编码的字符串,这不是您想要的。您需要改用
.write(myByteArrayOutputStream.toByteArray())
。@solendil。我已经尝试过了,我用fileinputstream获得了大家熟知的角色。你的意思是我应该把自己的字节数组发送到手机上吗?什么“条件”?您确实意识到转换为PNG/JPG会导致每个字节[]不同,不是吗?顺便说一句,请复制/粘贴IDE的输出,而不是上传它的截图。在什么情况下@Andrew是什么意思?是的,当然会产生不同的字节。我试图复制结果,但粘贴时得到了不同的字符,因此我上传了屏幕截图。:)你问“这个条件正确吗?”这是什么意思?它对我来说没有任何意义,因为它现在读的是。哦,我的意思是它不是必须显示RGB格式,但为什么它只显示一个未知字符?抱歉,我的问题不太清楚。:)如果将字节转储到控制台或其他典型的“文本输出”设备,字节[]将包含不映射到任何已知字符的值。试着用一个有效的PNG或JPG来说服自己。这与手机没有显示图像这一事实无关。