如何从本地文件的图像中获取byte [],例如/sdcard/tets.png?

时间:2011-11-24 10:25:39

标签: android

如何从存储在本地文件系统中的图像中获取字节[],例如EG:/sdcard/tets.png

2 个答案:

答案 0 :(得分:3)

使用Apache commons-io库中的IOUtils.toByteArray。这是我所知道的最简单,最安全的方式。 commons-io库本身很小。

这样的事情:

FileInputStream fileStream = null;
try {
    fileStream = new FileInputStream("/sdcard/tets.png");
    final byte[] data = IOUtils.toByteArray(fileStream);
    // Do something useful to the data
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
} finally {
    IOUtils.closeQuietly(fileStream);
}

答案 1 :(得分:0)

试试这段代码,

public static  byte[] getBytesFromFile(File file) throws IOException {
        InputStream is = new FileInputStream(file);
        long length = file.length();

        if (length > Integer.MAX_VALUE) {
            // File is too large
        }

        byte[] bytes = new byte[(int)length];

        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;
    }