java读写图片_java中快速读写图片到BufferedImage对象

本文介绍了如何在Java中快速将图片读取到BufferedImage对象,并将其写回文件。通过使用`Files.newInputStream`和`ImageIO`进行读写操作,以及通过`BufferedInputStream`提高性能。此外,还提供了一个工具类`GraphUtil`,包含了Base64编码和解码图像的方法。
摘要由CSDN通过智能技术生成

java7读取文件到BufferedImage对象

BufferedImage bufferedImage = ImageIO.read(Files.newInputStream(Paths.get(basePath + imageSource)));

java7写入文件到图片对象

ImageIO.write(bufferedImage, "jpg", Files.newOutputStream(Paths.get(fullPath)));

The call to Files.newInputStream will return a ChannelInputStream which (AFAIK) is not buffered. You'll want to wrap it

newBufferedInputStream(Files.newInputStream(...));

So that there are less IO calls to disk, depending on how you use it.

意译:据我所知,调用Files.newInputStream将会返回一些ChannelInputStream对象。如果你想对他进行封装,使用以下代码

new BufferedInputStream(File.newInputStream(Paths.get(fullPath)));

如此一来,磁盘IO的调用频次将会降低,具体看你怎么用了。

工具类:

importlombok.extern.slf4j.Slf4j;importsun.misc.BASE64Decoder;importsun.misc.BASE64Encoder;importjavax.imageio.ImageIO;importjava.awt.image.BufferedImage;importjava.io.BufferedInputStream;importjava.io.ByteArrayInputStream;importjava.io.ByteArrayOutputStream;importjava.io.IOException;importjava.nio.file.Files;importjava.nio.file.Paths;

@Slf4jpublic final classGraphUtil {/*** Encode Image to Base64 String

*@paramimage

*@paramtype

*@return

*/

public staticString encodeToString(BufferedImage image, String type) {

String imageString= null;

ByteArrayOutputStream bos= newByteArrayOutputStream();try{

ImageIO.write(image, type, bos);byte[] imageBytes =bos.toByteArray();

BASE64Encoder encoder= newBASE64Encoder();

imageString=encoder.encode(imageBytes);

bos.close();

}catch(IOException e) {

e.printStackTrace();

}returnimageString;

}/***

* Decode Base64 String to Image

*@paramimageString

*@return

*/

public staticBufferedImage decodeToImage(String imageString) {

BufferedImage image= null;byte[] imageByte;try{

BASE64Decoder decoder= newBASE64Decoder();

imageByte=decoder.decodeBuffer(imageString);

ByteArrayInputStream bis= newByteArrayInputStream(imageByte);

image=ImageIO.read(bis);

bis.close();

}catch(Exception e) {

e.printStackTrace();

}returnimage;

}public staticBufferedImage getBufferedImage(String basePath, String imageSource){try{return ImageIO.read(newBufferedInputStream(Files.newInputStream(Paths.get(basePath, imageSource))));

}catch(IOException e) {

log.error("读取图片出错:{}",e);return null;

}

}

}

参考来源:

https://stackoverflow.com/questions/18522398/fastest-way-to-read-write-images-from-a-file-into-a-bufferedimage

以上就是java中快速读写图片到BufferedImage对象的全部内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值