0

画像コードの保存に取り組んでいます...フレームレイアウトとオーバーレイ画像があります..完全に正常に動作しますが、ルートフォルダーに保存しています.sdcard/my_photosに保存したいのですが、ここに私のコードがあります:

FrameLayout mainLayout = (FrameLayout) findViewById(R.id.frame);
Random fCount = new Random();
int roll = fCount.nextInt(600) + 1;                       
File file = new File(Environment.getExternalStorageDirectory()
    + File.separator + "/ghost" + String.valueOf(roll) +".png" );

Bitmap b = Bitmap.createBitmap(mainLayout.getWidth(),
    mainLayout.getHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
mainLayout.draw(c);
FileOutputStream fos = null;
try {
  fos = new FileOutputStream(file);

  if (fos != null) {
    b.compress(Bitmap.CompressFormat.PNG, 90, fos);
    fos.close();
  }
} catch (Exception e) {
  e.printStackTrace();
}

お願い助けて。

4

2 に答える 2

0

次のことを試してください、

bool IsDirCreated=false;
File f = new File(Environment.getExternalStorageDirectory()+ File.separator+ "ghost");
if(!f.isDirectory()) 
{
   IsDirCreated=f.mkdirs();
}
else
{
   IsDirCreated=true;
}
if(IsDirCreated==true)
{
        FrameLayout mainLayout = (FrameLayout) findViewById(R.id.frame);
        Random fCount = new Random();
        int roll = fCount.nextInt(600) + 1;                       
        File file = new File(Environment.getExternalStorageDirectory()
    + File.separator + "/ghost/" + String.valueOf(roll) +".png" );

        Bitmap b = Bitmap.createBitmap(mainLayout.getWidth(),
        mainLayout.getHeight(), Bitmap.Config.ARGB_8888);
        Canvas c = new Canvas(b);
        mainLayout.draw(c);
        FileOutputStream fos = null;
        try 
        {
            fos = new FileOutputStream(file);
            if (fos != null) {
            b.compress(Bitmap.CompressFormat.PNG, 90, fos);
            fos.close();
        }
        catch (Exception e) 
        {
          e.printStackTrace();
        }
}
于 2012-05-24T04:28:34.587 に答える
0

ファイル file = new File(Environment.getExternalStorageDirectory() + File.separator + "/ghost" + String.valueOf(roll) +".png" ); ここで問題です。「new File(..)」に送信するものが、写真を保存するパスであることを確認してください。

于 2012-05-23T21:27:35.923 に答える