import java.io.ByteArrayOutputStream;
import com.sun.image.codec.jpeg.ImageFormatException;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import java.io.IOException;
public static byte[] bufferedImageToByteArray(BufferedImage img)
throws ImageFormatException, IOException {
ByteArrayOutputStream os = new ByteArrayOutputStream();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(os);
encoder.encode(img);
return os.toByteArray();
}
import java.io.IOException;
import java.io.ByteArrayOutputStream;
import javax.imageio.ImageIO;
public static byte[] bufferedImage2ByteArray(BufferedImage image) throws IOException{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(image, "jpeg", baos);
return baos.toByteArray();
}
public static byte[] bufferedImage2ByteArrayByFile(BufferedImage image)
throws Exception {
DataInputStream dis = null;
FileInputStream fis = null;
FileOutputStream fos = null;
byte[] buf = null;
File file = null;
file = new File("D:/tmp.jpg");
fos = new FileOutputStream(file);
ImageIO.write(image, "jpeg", fos);
fos.close();
fis = new FileInputStream(file);
dis = new DataInputStream(fis);
buf = new byte[dis.available()];
dis.read(buf);
dis.close();
fis.close();
file.delete();
return buf;
}
必须要先关闭文件输入、输出流才能删除临时文件。(78ms)
第一种方法效率高