Android: проблема в декодировании растрового изображения - PullRequest
0 голосов
/ 03 декабря 2010

В моем проекте у меня есть изображение, которое с помощью программы я извлекал пиксели, манипулировал этими пикселями и затем сохранял его в своем пакете. Способ, которым я его сохранил, таков:

private void createPicture()
{
    System.out.println("Inside createPicture");
    System.out.println(contextPath);
    try{
        FileOutputStream fos = new FileOutputStream(contextPath + "/" + picName);
        DataOutputStream dos = new DataOutputStream(fos); 

        for(int i=0; i<splitedPixel.length; i++)
            dos.writeByte(splitedPixel[i]);

        dos.flush();
        dos.close();
    }
    catch(IOException e){
        System.out.println("IOException : " + e);
    }
    System.out.println("Picture Created.");
}

так, это сохраняет мою фотографию в этом каталоге

/ данные / данные / my_package_name / файлы / myPic.bmp

Теперь я хочу прочитать это новое изображение и извлечь пиксели этого изображения. Я использовал этот метод:

public Stego(Context context)
{
    //Instantiate an ImageView and define its properties
    contextPath = context.getFilesDir().getAbsolutePath();
    image = BitmapFactory.decodeFile(contextPath + "/" + picName);

    System.out.println("Image= " + image);
    imWidth  = image.getWidth();
    imHeight = image.getHeight();
    getMaxMessageChars();
    System.out.println("Width: " + imWidth);
}

Программа вылетает здесь. logcat указывает, что результат для изображения равен нулю, и когда программа достигает значения getWidth, происходит сбой.

Правильны ли эти способы написания и чтения? Могу ли я зайти в каталог через эмулятор, чтобы проверить, создана эта картинка или нет?

Спасибо

1 Ответ

0 голосов
/ 03 декабря 2010

Я думаю, вы должны закрыть fos поток в методе createPicture().

BitmapFactory.decode*() методы возвращают null в случае ошибки.Так что лучше проверить null после декодирования.

Насколько я знаю, вы можете сохранить файл из внутреннего хранилища Android только на эмуляторе или на корневом устройстве.Это можно сделать с помощью DDL-перспективы Eclipse или утилиты ddms из набора инструментов Android SDK.Просто нажмите Device-> File Explorer и извлеките файлы с устройства.

Если вы хотите получить файл с нерутированного устройства, вам лучше сохранить его на внешнем устройстве.хранилище (sdcard).В этом случае вы можете подключить ваше устройство к компьютеру, например, к внешнему жесткому диску.

...