7

私はアンドロイド内蔵カメラを使用して写真を撮り、同じ写真を電子メールに添付しています.1.6デバイスでこの機能をテストしているとき、内蔵カメラで撮影する写真に名前を付けることができますが、2.1では写真は名前を持つ、つまりデバイスによって与えられる、

2.1 組み込みカメラ画像でユーザー定義名を付ける方法..

その問題を回避するために、私は手動で画像を保存していますが、インテントを介してビットマップとして画像を取り戻そうとすると、圧縮方法を使用してSDカードに保存します

このメソッドは、内蔵カメラからの結果を処理します

protected void onActivityResult(int requestCode, int resultCode, Intent data)
 {
  File file = new File(Environment.getExternalStorageDirectory()
    + "/test.png");
  switch (requestCode)
  {
  case PHOTO_ACTION:
   if (resultCode == RESULT_CANCELED)
   {
     addPhoto = false;
     Toast.makeText(this, "Canceled ", Toast.LENGTH_LONG).show();
     break;
   } else if (resultCode == RESULT_OK)
   {
    Bundle b = data.getExtras();
    Bitmap bm = (Bitmap) b.get("data");

    FileOutputStream out;
    try
     {

     out = new FileOutputStream(file);
     bm.compress(Bitmap.CompressFormat.JPEG, 100, out);
     out.flush();
     out.close();
     scanPhoto(file.toString());
     out = null;
     addPhoto = true;
     } catch (Exception e)
      {
       e.printStackTrace();
       addPhoto = false;
      }

しかし、このように保存すると、2つの画像が得られます。1 つはシステムで付けられた名前で、もう 1 つは私が付けた名前です。しかし、ユーザーが定義した画像は解像度が低いので、ビットマップを圧縮せずに解像度を上げて保存する方法を質問します..助けてください....私

4

2 に答える 2

6

品質を落とさずにビットマップを保存したいだけの場合は、JPEG の代わりに CompressFormat.PNG を使用してみてください。以前にその問題を抱えている人を見たことがあります。変更してみてください:

bm.compress(Bitmap.CompressFormat.JPEG, 100, out);

と:

bm.compress(Bitmap.CompressFormat.PNG, 100, out);

そして、それが役立つことを確認してください。

于 2011-03-04T11:25:44.453 に答える
3

上記のリックの回答とは別に、完全な画像を保存できるカメラ インテントに URI を提供していることを確認してください。そうしないと、インテントのデータ パラメータでサム イメージが返されます。したがって、次のようになります。

Intent photoPickerIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
imgFile = new File("Cache directory","img.png"); //== where you want full size image
photoPickerIntent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(imgFile));
startActivityForResult(photoPickerIntent, PickPhoto);

これは私がやっていたエラーでした。

于 2014-08-22T08:39:42.900 に答える