Привет! Я создал этот метод для следующего:
- принимает растровое изображение
-создание временного файла
- сжать растровое изображение и поместить его во временный файл
-открыть временный файл
-читанные байты >>> проблема здесь в моем коде
- сохранить эти байты в sqlite db
- извлечь байты из sqlite db
- снова установить эти байты как растровое изображение
Я знаю, что знаю, что это абсолютно бесполезно, но я нашел единственный способ сделать то, чего я хочу достичь:
- сжатие растрового изображения
- сохранить в базу данных sqlite
так вот код. программа просто вылетает в in.read (bb):
private void updateBitmapData() {
File file = null;
FileOutputStream stream = null;
try {
file = File.createTempFile("image", null, getBaseContext().getFilesDir());
stream = new FileOutputStream(file);
System.out.println(thumbnail.getRowBytes());
thumbnail.compress(Bitmap.CompressFormat.JPEG, 50, stream);
stream.close();
FileInputStream in=new FileInputStream(file);
byte[] bb = null;
in.read(bb); //crash
in.close();
System.out.println("despues compression"+bb.length);
DBAdapter db=new DBAdapter(getApplicationContext());
db.insertData(bb);
Cursor c=db.getLastImage();
if(c.moveToFirst()){
bb=c.getBlob(0);
}
c.close();
db.close();
im.setImageBitmap(BitmapFactory.decodeByteArray(bb, 0, bb.length));
} catch (FileNotFoundException e) {
e.printStackTrace();
Log.e("NuevaIncidencia", e.getLocalizedMessage());
im.setImageBitmap(thumbnail);
}catch (IOException e1) {
Log.e("NuevaIncidencia", e1.getLocalizedMessage());
e1.printStackTrace();
im.setImageBitmap(thumbnail);
} catch (Exception e2){
e2.printStackTrace();
//Log.e("NuevaIncidencia", e2.getLocalizedMessage());
}
}
Как я мог решить эту проблему? спасибо