zoukankan      html  css  js  c++  java
  • InputStream,BufferedImage与byte数组之间的转换

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

  • 相关阅读:
    [CF1076D] Edge Deletion
    [CF1081D] Maximum Distance
    [CF1095F] Make It Connected
    [CF1328E] Tree Queries
    [CF1328F] Make k Equal
    Codeforces Round #629 (Div. 3) 总结
    [CF1131D] Gourmet choice
    [CF1176D] Recover it!
    [CF1205B] Shortest Cycle
    [CF1213G] Path Queries
  • 原文地址:https://www.cnblogs.com/myjoan/p/4739102.html
Copyright © 2011-2022 走看看