image图片转的确为byte[],byte[]转换为image

本文介绍了一段代码,展示了如何将图片从文件读取到内存,然后将其转换为JPEG格式,并最终保存到本地文件。该过程涉及使用Java的FileInputStream和ByteArrayOutputStream进行流操作,以及ImageIO类进行图像读写。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//把图片放入File中
File file = newFile("C:\\rose.jpg");
FileInputStream fis = new FileInputStream(file);
 
//InputStream in = resource.openStream();
ByteArrayOutputStream bos = newByteArrayOutputStream();
byte[] buf = newbyte[1024];
try{
    for(intreadNum; (readNum = fis.read(buf)) != -1;) {
        bos.write(buf,0, readNum);
        System.out.println("read " + readNum +" bytes,");
    }
}catch(IOException ex) {
    Logger.getLogger(ConvertImage.class.getName()).log(Level.SEVERE,null, ex);
}
byte[] bytes = bos.toByteArray();

ByteArrayInputStream bis = newByteArrayInputStream(bytes);
Iterator<?> readers = ImageIO.getImageReadersByFormatName("jpg");

//ImageIO is a class containing static convenience methods for locating ImageReaders
//and ImageWriters, and performing simple encoding and decoding.
ImageReader reader = (ImageReader) readers.next();
Object source = bis; // File or InputStream, it seems file is OK
 
ImageInputStream iis = ImageIO.createImageInputStream(source);
//Returns an ImageInputStream that will take its input from the given Object
 
reader.setInput(iis,true);
ImageReadParam param = reader.getDefaultReadParam();
 
Image image = reader.read(0, param);
//got an image file
 
BufferedImage bufferedImage = newBufferedImage(image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_RGB);
//bufferedImage is the RenderedImage to be written
Graphics2D g2 = bufferedImage.createGraphics();
g2.drawImage(image,null,null);
File imageFile = newFile("C:\\newrose2.jpg");
ImageIO.write(bufferedImage,"jpg", imageFile);
//"jpg" is the format of the image
//imageFile is the file to be written to.
 
System.out.println(imageFile.getPath());
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值