 <p>Sometimes, It happens, when your byte[] not decode properly after retrieving from database as blob type.</p> <p>So, You can do like this way, <strong>Encode - Decode</strong>,</p> <p>Encode the image before writing to the database:</p> <pre><code>ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); mBitmap.compress(Bitmap.CompressFormat.JPEG, THUMB_QUALITY, outputStream); mByteArray = outputStream.toByteArray(); // write this to database as blob </code></pre> <p>And then decode it like the from Cursor:</p> <pre><code>ByteArrayInputStream inputStream = new ByteArrayInputStream(cursor.getBlob(columnIndex)); Bitmap mBitmap = BitmapFactory.decodeStream(inputStream); </code></pre> <p>Also, If this not work in your case, then I suggest you to go on feasible way..</p> <ul> <li>Make a directory on external / internal storage for your application images.</li> <li>Now store images on that directory.</li> <li>And store the path of those image files in your database. So you don't have a problem on encoding-decoding of images.</li> </ul>