需要获取网络的一张图片,但是某种需要,要把获取的这段流输入换为BufferedImage流,有的地方还需要转换为byte[].

获得图片地址,获得了一个图片输入流,例如:

Url img = new  URL(url);
InputStream in = img.openStream();

接着把输入流转为 BufferedImage:

JPEGImageDecoder decoderFile = JPEGCodec.createJPEGDecoder(in);
BufferedImage image = decoderFile.decodeAsBufferedImage();

如果根据这个图片对象,重新draw了一个新的bufferedImage以后,怎么才能获得它的byte数组呢?

通过ImageIO对象进行操作: ImageIO.write(bufferedImage, "jpg", bos);

这样就可以根据bos输出流获得byte数组了, 减少了通过File进行一次io操作的必要

这个也对缓存图片有一定的意义。

URL url = new URL("http://www.google.com/intl/en_ALL/images/logo.gif");
BufferedImage image = ImageIO.read(url);
ByteArrayOutputStream os = new ByteArrayOutputStream();
ImageIO.write(image, "gif", os);
InputStream is = new ByteArrayInputStream(os.toByteArray());

转载于:https://www.cnblogs.com/myjoan/p/4739102.html

需要获取网络的一张图片,但是某种需要,要把获取的这段流输入换为BufferedImage流,有的地方还需要转换为byte[].获得图片地址,获得了一个图片输入流,例如: Url img = new URL(url); InputStream in = img.openStream();接着把输入流转为BufferedImage: JPEGImageDecoder de...
当创建 Buffer ed InputStream 时,将创建一个内部缓冲区 数组 。 当从流中读取或跳过字节时,内部缓冲区将根据需要从所包含的输入流中重新填充,一次有多个字节。 mark操作会记住输入流中的一点,并且reset操作会导致从最近的mark操作之后读取的所有字节在从包含的输入流中取出新的字节之前重新读取。 Buffer ed InputStream 的父类是Filter InputStream Filter InputStream 的父类是 InputStream (字节输入流的超类) 相对于 FileInputS.
byte []到 BufferedImage 转换 涉及 InputStream 和ImageIO.read的使用,如下所示: InputStream in = new Byte Array InputStream (imageIn Byte ); BufferedImage bImageFromConvert = ImageIO.read(in); 以下示例将读取一个名为“ darksouls.jpg ...
import java .awt.Graphics2D; import java .awt.RenderingHints; import java .awt.geom.Ellipse2D; import java .awt.image.B
InputStream 是字节流, InputStream Reader将字节流转成字符流, Buffer edReader将字符流转成字符缓冲,开始读字符. 1. InputStream 、OutputStream 处理字节流的抽象类 InputStream 是字节输入流的所有类的超类,一般我们使用它的子类,如File InputStream 等. OutputStream是字节输出流的所...
byte [] byte s = new byte [1024] InputStream buffin = new Byte Array InputStream ( byte s) BufferedImage bufferedImage = ImageIO.read(buffin) byte InputStream 互转 // byte ----> InputStream byte [] byte s = new byt
可以使用 Java Byte ArrayOutputStream 类将 InputStream 转换 byte 数组 。代码示例如下: InputStream inputStream = ...; Byte ArrayOutputStream outputStream = new Byte ArrayOutputStream(); byte [] buffer = new byte [1024]; int byte sRead; while (( byte sRead = inputStream .read( buffer )) != -1) { outputStream.write( buffer , 0, byte sRead); byte [] result = outputStream.to Byte Array(); 其中, inputStream 是需要 转换 InputStream 对象,result 是 转换 后的 byte 数组 博主的这个很全呀,我最近也在看DPDK源码,可以好好交流下,今天刚整理了DPDK源码中的LPM实现:https://blog.csdn.net/s2603898260/article/details/118994826 有兴趣的可以交流下