user1590595
user1590595

Reputation: 805

How to create Image File inside Internal Cache Directory in Android

I want to have image.png inside cache/images/ in Internal Storage of Android.

I am not able to have it with following code:

File directory = new File(getContext().getCacheDir(), "images");
directory.mkdirs();


File mypath=new File(directory,"image.png");

FileOutputStream fos = null;
try {
    fos = new FileOutputStream(mypath);

    bmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
} catch (Exception e) {
    e.printStackTrace();
} finally {
    try {
        fos.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}       

With the above code I am not even able to create a directory named images. Pls help, I am beginner.

Upvotes: 2

Views: 9094

Answers (2)

OBX
OBX

Reputation: 6114

Try this:

File sd = getCacheDir();
File folder = new File(sd, "/myfolder/");
if (!folder.exists()) {
    if (!folder.mkdir()) {
        Log.e("ERROR", "Cannot create a directory!");
    } else {
        folder.mkdirs();
    }
}

File fileName = new File(folder,"mypic.jpg");

try {
    FileOutputStream outputStream = new FileOutputStream(String.valueOf(fileName));
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream);
    outputStream.close();

} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

Upvotes: 7

Areeb Momin
Areeb Momin

Reputation: 447

I have implemented it like this...

//create file
File file = new File(context.getExternalCacheDir(), System.currentTimeMillis() + ".png");

//draw image if created successfully
if (file.createNewFile()) {

//initialize image BitMap
Bitmap bitmap = Bitmap.createBitmap(500, 500, Bitmap.Config.ARGB_8888);

//initialize canvas and paint object
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint(Paint.LINEAR_TEXT_FLAG | Paint.ANTI_ALIAS_FLAG);

//design part goes here using Paint and Canvas
...

//get file output stream and draw design on image file
FileOutputStream fileOutputStream = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fileOutputStream);
fileOutputStream.flush();
fileOutputStream.close();
}

Upvotes: 1

Related Questions