converting Image to byte[]
- 카테고리 없음
- 2010. 7. 9.
//// Read from a file
//File file = new File("img/strawberry.jpg");
//image = ImageIO.read(file);
//// Read from an input stream
//InputStream is = new BufferedInputStream(new FileInputStream("image.gif"));
//image = ImageIO.read(is);
// Read from a URL
//URL url = new URL("http://t2.gstatic.com/images?q=tbn:QWLWF6U_RKh34M:http://www.townofeb.com/IMAGES/soccer1.gif");
//image = ImageIO.read(url);
public byte[] convertByteArray(File file) throws Exception {
BufferedImage img = ImageIO.read(file);
ByteArrayOutputStream baos = new ByteArrayOutputStream((int) file.length());
// ImageIO 포맷가능한 파일들 알아보기
// String[] names = ImageIO.getWriterFormatNames();
// for ( String name: names )
// {
// System.out.println( name );
// }
String imgFormat = determineImageFormat(convertByteArray(file));
log.info(imgFormat);
// ImageIO.write(img,"png",baos);
ImageIO.write(img, imgFormat, baos);
baos.flush();
byte[] result = baos.toByteArray();
baos.close();
return result;
}
private String determineImageFormat(byte[] imageBytes) throws IOException {
final ByteArrayInputStream bStream = new ByteArrayInputStream(imageBytes);
final ImageInputStream imgStream = ImageIO.createImageInputStream(bStream);
final Iterator<ImageReader> iter = ImageIO.getImageReaders(imgStream);
final ImageReader imgReader = iter.next();
return imgReader.getFormatName();
}
* 방법 2
public byte[] convertBytes(File file) throws Exception {
InputStream is = new FileInputStream(file);
long fileLength = file.length();
if (fileLength > Integer.MAX_VALUE) { // Integer.MAX_VALUE:2147483647
// File is too large
}
byte[] bytes = new byte[(int) fileLength];
int offset = 0;
int numRead = 0;
while (offset < bytes.length && (numRead = is.read(bytes, offset, bytes.length - offset)) >= 0) {
offset += numRead;
}
if (offset < bytes.length) {
throw new IOException("Could not completely read file " + file.getName());
}
is.close();
return bytes;
}