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

java

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

new BufferedInputStream(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的调用频次将会降低,具体看你怎么用了。

 工具类:

import lombok.extern.slf4j.Slf4j;

import sun.misc.BASE64Decoder;

import sun.misc.BASE64Encoder;

import javax.imageio.ImageIO;

import java.awt.image.BufferedImage;

import java.io.BufferedInputStream;

import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

import java.io.IOException;

import java.nio.file.Files;

import java.nio.file.Paths;

@Slf4j

public final class GraphUtil {

/**

* Encode Image to Base64 String

* @param image

* @param type

* @return

*/

public static String encodeToString(BufferedImage image, String type) {

String imageString = null;

ByteArrayOutputStream bos = new ByteArrayOutputStream();

try {

ImageIO.write(image, type, bos);

byte[] imageBytes = bos.toByteArray();

BASE64Encoder encoder = new BASE64Encoder();

imageString = encoder.encode(imageBytes);

bos.close();

} catch (IOException e) {

e.printStackTrace();

}

return imageString;

}

/***

* Decode Base64 String to Image

* @param imageString

* @return

*/

public static BufferedImage decodeToImage(String imageString) {

BufferedImage image = null;

byte[] imageByte;

try {

BASE64Decoder decoder = new BASE64Decoder();

imageByte = decoder.decodeBuffer(imageString);

ByteArrayInputStream bis = new ByteArrayInputStream(imageByte);

image = ImageIO.read(bis);

bis.close();

} catch (Exception e) {

e.printStackTrace();

}

return image;

}

public static BufferedImage getBufferedImage(String basePath, String imageSource){

try {

return ImageIO.read(new BufferedInputStream(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对象 的全部内容, 来源链接: utcz.com/z/389937.html

回到顶部