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对象的全部内容。