The the client side of a content provider consumer I can do something like this, to get a proper InputStream for reading the picture:
InputStream is = getCon
As of android-9, you can make a pipe using ParcelFileDescriptor. You can stuff up to 64k in it and be done with it, or you can set up another thread to fill it after its been read. See the answer here for more detail:
Custom ContentProvider - openInputStream(), openOutputStream()