2

ビットマップ イメージを内部ストレージ (外部ストレージではなく) に保存したい。このコードを書きましたが、何か問題があるようです。DDMS から画像をダウンロードすると、開くことができないためです。

public String writeFileToInternalStorage(Context context, Bitmap outputImage) {

        String fileName = Long.toString(System.currentTimeMillis()) + ".png";

        try {
            OutputStreamWriter osw = new OutputStreamWriter(context.openFileOutput(fileName, Context.MODE_PRIVATE));
            osw.write(outputImage.toString());
            Log.i(TAG, "Image stored at: " + fileName);
        } catch (Exception e) {
            Log.w(TAG, e.toString()); 
            fileName = null;
        } 

        return fileName;
    } 
4

2 に答える 2

6

outputImage.toString() は画像ではありません:)ファイルに入れる内容はバイナリデータではなく、何らかの文字列です!

それを行う方法は次のとおりです。

public String writeFileToInternalStorage(Context context, Bitmap outputImage) {
    String fileName = Long.toString(System.currentTimeMillis()) + ".png";

    final FileOutputStream fos = openFileOutput(fileName, Context.MODE_PRIVATE);
    outputImage.compress(CompressFormat.PNG, 90, fos);
}

ブラウザに直接コーディングしました。構文エラーが発生する可能性がありますが、コードは機能するはずです。

于 2012-07-22T10:47:51.827 に答える
0

問題は、ビットマップを FileOutputStream に圧縮する代わりに .toString() を使用することです。

FileOutputStream out = new FileOutputStream(filename);
outputImage.compress(Bitmap.CompressFormat.PNG, 90, out);

内部ストレージも Context を介して取得できます。

File cacheDir = context.getCacheDir();
于 2012-07-22T10:47:23.907 に答える