I'm trying to save my view as an image. I have done some work, doesn't show any error but I can find the location where is the image saved(or in the gallery). Is the image created at all, or I'm having some other issues? The image should be saved when pressing red from options menu:
case R.id.red:
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
String FILENAME="Boenka";
FileOutputStream fos = null;
try {
fos = openFileOutput(FILENAME, Context.MODE_WORLD_READABLE);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
parent.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap( parent.getWidth(), parent.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
parent.draw(canvas);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
return true;
This is my main - Draw class
public class Draw extends Activity {
DrawView drawView;
SignatureView signature;
private RelativeLayout parent;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
parent = (RelativeLayout) findViewById(R.id.signImageParent);
signature = new SignatureView(getApplicationContext(), null);
signature.setColor(Color.MAGENTA);
parent.addView(signature);
}
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.my_options_menu, menu);
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.clear:
signature.clear();
return true;
case R.id.red:
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
String FILENAME="Boenka";
FileOutputStream fos = null;
try {
fos = openFileOutput(FILENAME, Context.MODE_WORLD_READABLE);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
parent.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap( parent.getWidth(), parent.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
parent.draw(canvas);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
return true;
case R.id.blue:
signature.setColor(Color.BLUE);
return true;
case R.id.yellow:
signature.setColor(Color.YELLOW);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public void onBackPressed() {
this.finish();
super.onBackPressed();
}
}
public void saveImage(Bitmap b,int count) throws Exception
{
String path = Environment.getExternalStorageDirectory().toString();
OutputStream fOut = null;
String s=at.getText().toString();
String alphaAndDigits = s.replaceAll("[^a-zA-Z0-9]+","_");
String fileName = alphaAndDigits+"_"+wr.name+"_"+count;
File file = new File(path, fileName+".jpg");
newFile=Uri.fromFile(file);
uris.add(newFile);
fOut = new FileOutputStream(file);
b.compress(Bitmap.CompressFormat.JPEG, 85, fOut);
fOut.flush();
fOut.close();
MediaStore.Images.Media.insertImage(getContentResolver(),file.getAbsolutePath(),file.getName(),file.getName());
}
Try this function it worked well for me, this is for saving the bitmap please ensure that drawing cache is working fine for you.