ストレージに画像保存するためのクラス

public class ImageManager {

	private Context mContext;
	private String fileFullPath;

	public ImageManager(Context context) {
		mContext = context;
	}

	/**
	 * 画像の保存
	 *
	 * @param bitmap
	 * @param albumName
	 */
	public void save(Bitmap bitmap, String albumName) {
		if (!canUseSd()) {
			Log.e("Error", "Can't use SD Card");

			return;
		}

		saveToSd(getSdStorageDir(albumName), bitmap);
	}

	/**
	 * ストレージに画像保存
	 *
	 * @param dir
	 * @param bitmap
	 */
	private void saveToSd(File dir, Bitmap bitmap) {
		String fileName = getFileName();
		fileFullPath = dir.getAbsolutePath() + "/" + fileName;

		Log.d("保存パス","fileFullPath= " + fileFullPath);

		try {
			// 保存処理
			FileOutputStream fos = new FileOutputStream(fileFullPath);
			bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
			fos.flush();
			fos.close();
		} catch (Exception e) {
			Log.e("Error", "" + e.toString());
		} finally {
			// アルバムに反映
			addGallery(fileName);
		}
	}

	/**
	 * 保存した画像をギャラリーに追加
	 *
	 * @param fileName
	 */
	private void addGallery(String fileName) {
		try {
			ContentValues values = new ContentValues();
			ContentResolver contentResolver = mContext.getContentResolver();
			values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
			values.put(MediaStore.Images.Media.TITLE, fileName);
			values.put("_data", fileFullPath);
			contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
		} catch (Exception e) {
			Log.e("Error", "" + e);
		}
	}

	/**
	 * 画像のファイル名を日付から生成し取得
	 *
	 * @return
	 */
	private String getFileName() {
		Date mDate = new Date();
		SimpleDateFormat fileNameFormat = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.ENGLISH);
		String fileName = fileNameFormat.format(mDate) + ".jpg";

		return fileName;
	}

	/**
	 * ストレージのストレージパス取得
	 *
	 * @param albumName
	 * @return
	 */
	private File getSdStorageDir(String albumName) {
		File dir = new File(Environment.getExternalStoragePublicDirectory(
				Environment.DIRECTORY_PICTURES), albumName);

		if (!dir.exists()) {
			if (!dir.mkdirs()) {
				Log.e("Error", "Directory not created");
			}
		}

		return dir;
	}

	/**
	 * ストレージが読み込み可能か
	 *
	 * @return
	 */
	public boolean canReadSd() {
		String status = Environment.getExternalStorageState();
		if (!status.equals(Environment.MEDIA_MOUNTED)) {
			return false;
		}

		File file = Environment.getExternalStorageDirectory();
		if (file.canRead()) {
			return true;
		}

		return false;
	}

	/**
	 * ストレージに書き込み可能か
	 *
	 * @return
	 */
	public boolean canWriteSd() {
		String status = Environment.getExternalStorageState();
		if (!status.equals(Environment.MEDIA_MOUNTED)) {
			return false;
		}

		File file = Environment.getExternalStorageDirectory();
		if (file.canWrite()) {
			return true;
		}

		return false;
	}

	/**
	 * ストレージが使用可能か
	 *
	 * @return
	 */
	public boolean canUseSd() {
		return canReadSd() && canWriteSd();
	}
}

使い方は、

			ImageView imageView = (ImageView) findViewById(R.id.photo_image);
			Bitmap imageForScale = ((BitmapDrawable) imageView.getDrawable()).getBitmap();

			ImageManager imageManager = new ImageManager(this);
			try {
				String albumName = "Save image sample";
				imageManager.save(imageForScale, albumName);
			} catch (Error e) {
				Log.e("MainActivity", "onCreate: " + e);
			}