converting Image to byte[]


* 파일 객체 생성
//// 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);

* 방법 1
        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;
}


Designed by JB FACTORY