需要获取网络的一张图片,但是某种需要,要把获取的这段流输入换为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
数组
。