2

私のアプリケーションでは、Android カメラで写真をキャプチャし、それをサーバーに送信したいと考えています。これには、Client Socket プログラミングを使用します。キャプチャした写真を bytearray(byte[]) に変換してからサーバーに送信します。すべてが完璧に機能します。

元の写真をサーバーに送信できないという問題があります。サムネイル写真はアンドロイド携帯電話から送信されます。しかし、カメラで写真をキャプチャすると、元の写真がギャラリーにあります。

この元の写真をアプリケーションで使用するにはどうすればよいですか?

私のコード:

Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        cameraIntent.putExtra("outputFormat",Bitmap.CompressFormat.JPEG);
        cameraIntent.putExtra("return-data", true);
    startActivityForResult(Intent.createChooser(cameraIntent, "Select Picture"),
                    CAMERA_REQUEST);

そして onActivityResult メソッドで:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == CAMERA_REQUEST) {
        Bitmap photo = (Bitmap) data.getExtras().get("data");
//          byte[] a = (byte[]) data.getExtras().getByteArray("data"); // I also use this but not work


        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        photo.compress(CompressFormat.JPEG, 100, bos);
        byte[] bitmapdata = bos.toByteArray();


    }
}

ビットマップデータの写真はありますが、元の写真ではなく圧縮されています。一部の人々は、 compress(CompressFormat.JPEG, 100, bos);の品質フィールドを変更すると言います。0 から 100 の間ですが、何も起こりません。

-- >>カメラで撮影した元の写真を取得する他の方法はありますか

-- >>写真がコンピューターのフォルダーにある場合、パスを指定してファイル内のこの写真を読み取ります。ex-ファイル file = new File(c:\newphoto\image.jpg); . 写真の名前と場所を知っているので、Androidでこのコードを使用して元の写真を読み取ることができますか。はいの場合、ギャラリーで写真を読み取るためのパスは何ですか。\DCIM\Camera\photoName.jpgとしてパスを指定すると、これは機能しますか。

-- >>または、現在のコードを変更する必要がありますが、問題なく動作しますか?

4

1 に答える 1

6

を使用して画像をキャプチャするためにインテントを使用していACTION_IMAGE_CAPTUREます。通常、インテントを使用してカメラを起動すると、 onActivityResult() で画像がビットマップとして返​​されますが、これはサムネイル用です。

カメラからフル解像度の画像を取得したい場合は、カメラ アクティビティを開始するために発火するインテントを含むファイルを提供する必要があります。

以下のようにできます

Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
File out = Environment.getExternalStorageDirectory();
out = new File(out, imagename);
i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(out));
startActivityForResult(i, CAMERA_RESULT);

ここには、MediaStore.EXTRA_OUTPUTカメラに画像を書き込むファイルの Uri を受け取るパラメーターがあります。

詳細については、以下の例を参照してください

カメラからフル解像度の画像をキャプチャ

于 2012-05-28T07:25:17.010 に答える