Yanshof
Yanshof

Reputation: 9926

How to convert OutputStream to File?

The code below get image from some location - and make this image compress image. But i need to make the compress Image to be File ... How can i do it ?

   File compressFile = null;
   File file = new File("MyFile");
   OutputStream fOut    = new FileOutputStream(file);
   if(image.compress(Bitmap.CompressFormat.PNG, 100, fOut))
   {
       fOut.flush();
       fOut.close();

      compressFile = ??? // I need here to make the OutputStream  to be back to file. 
   }

Upvotes: 2

Views: 36369

Answers (2)

Caner
Caner

Reputation: 59198

image.compress already writes the image to the file, assuming you gave a correct file name. So use it like this:

   File file = new File(Environment.getExternalStorageDirectory() + "/myimage.png");
   FileOutputStream fOut = new FileOutputStream(file);
   image.compress(Bitmap.CompressFormat.PNG, 100, fOut);
   fOut.close();

Upvotes: 7

kaspermoerch
kaspermoerch

Reputation: 16570

As stated in the documentation for OutputStream:

Most clients will use output streams that write data to the file system (FileOutputStream), the network (getOutputStream()/getOutputStream()), or to an in-memory byte array (ByteArrayOutputStream).

Meaning the data sent to the OutputStream has allready been written to your file.

If what you mean is that you need access to the file once it has been compressed you should look at documentation for the compress() method which states:

If this returns true, the bitmap can be reconstructed by passing a corresponding inputstream to BitmapFactory.decodeStream().

So what you need to do is this:

image = BitmapFactory.decodeStream( new FileInputStream( file ) );

Upvotes: 2

Related Questions