各位先进好,现在在写一个将image转成byte array, 再将byte array转回image的功能。
在网络上找到下述用BufferedImage与ImageIO的方式,可以达到我的需求,
也可以正常显示,看起来也是同一张图。
但我发现原始的图档和转换后的图档大小不一样。
由windows的档案内容进去看,
原先图档的资讯为640*480,水平分辨率72dpi,垂直分辨率72dpi,位元深度24,
分辨率单位 2,色彩呈现sRGB,
但产生的档案资讯为640*480,水平分辨率96dpi,垂直分辨率96dpi,位元深度24,
没有其他资讯。猜测是转换过程中省略了部份资料,
但我希望产生的档案和原始档案要完全一样。请问有办法达到吗?
// 转成byte array
BufferedImage originalImage = ImageIO.read(new File("/D:/IMG_0003.JPG"));
baos = new ByteArrayOutputStream();
ImageIO.write(originalImage, "jpg", baos);
baos.flush();
byte[] imageInByte = baos.toByteArray();
//转回image
BufferedImage img = ImageIO.read(new ByteArrayInputStream(it.next().message()));
File outputfile = new File("d:/result.jpg");
ImageIO.write(img,"jpg",outputfile);