【发布时间】:2013-11-30 21:00:59
【问题描述】:
我下载了一段包含这一行的代码:
BufferedImage imag=ImageIO.read(new ByteArrayInputStream(bytearray))
其中 bytearray 的类型为 byte[]。
ImageIO.read 如何从 1 个暗字节数组中知道图像的尺寸? 例如如果 bytearray 的长度为 30,它如何知道它是 3x10 或 5x6 还是 1x30 的图像?
整个源码是here,看“方法二”。
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
public class SimpleConvertImage {
public static void main(String[] args) throws IOException{
String dirName="C:\\";
ByteArrayOutputStream baos=new ByteArrayOutputStream(1000);
BufferedImage img=ImageIO.read(new File(dirName,"rose.jpg"));
ImageIO.write(img, "jpg", baos);
baos.flush();
String base64String=Base64.encode(baos.toByteArray());
baos.close();
byte[] bytearray = Base64.decode(base64String);
// *The following line*
BufferedImage imag=ImageIO.read(new ByteArrayInputStream(bytearray));
ImageIO.write(imag, "jpg", new File(dirName,"snap.jpg"));
}
}
【问题讨论】:
-
“ImageIO.read如何知道维度”通过解析流中包含的数据。
-
字节数组是否将该信息存储在其标头中?
标签: java image-processing bytearray javax.imageio