Получить байтовый массив изображения JPEG без сжатия - PullRequest
2 голосов
/ 13 сентября 2011

Я хотел бы получить массив байтов изображения JPEG без , используя следующий метод:

    bitmap = BitmapFactory.decodeFile("/sdcard/photo.jpg");
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    bitmap.compress(CompressFormat.JPEG, 50, baos);
    byte[] data = baos.toByteArray();

Есть ли в любом случае, чтобы сделать это?

Ответы [ 2 ]

3 голосов
/ 13 сентября 2011

Есть ли причина не загружать сам файл как обычный FileInputStream и т. Д.?(Лично мне нравится Guava's Files.toByteArray() как простой способ загрузки файла, но я не знаю статус Guava на Android.)

1 голос
/ 13 сентября 2011

Если вы считаете его нормальным типом файла, это решит вашу проблему.

вот код

File file = new File("/sdcard/download/The-Rock2.jpg");
byte[] bytes = getBytesFromFile(file);



public byte[] getBytesFromFile(File file) {
    byte[] bytes = null;
    try {

        InputStream is = new FileInputStream(file);
        long length = file.length();

        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();
    } catch (IOException e) {
                  //TODO Write your catch method here
    }
    return bytes;
}
...