2017-01-28 19 views
0

私の本来のAndroid Phoneカメラから写真を撮っています!しかし、私が望むのは、キャプチャした写真のサイズを変更してから保存することです。私がしようとしている何Android Camera Intent写真を保存して保存する前に写真のサイズを変更する

は次のとおりです。

public void takePhoto() { 
     Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); 
     File folder = new File(Environment.getExternalStorageDirectory() + "/PhotoBox"); 

     if (!folder.exists()) { 
      folder.mkdir(); 
     } 
     final Calendar c = Calendar.getInstance(); 
     String new_Date = c.get(Calendar.DAY_OF_MONTH) + "-" + ((c.get(Calendar.MONTH)) + 1) + "-" + c.get(Calendar.YEAR) + " " + c.get(Calendar.HOUR) + "-" + c.get(Calendar.MINUTE) + "-" + c.get(Calendar.SECOND); 
     path = String.format(Environment.getExternalStorageDirectory() + "/" + "PhotoBox" + "/%s.png", "Product(" + new_Date + ")"); 

     File photo = new File(path); 

     intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo)); 
     xPath = path; 
     startActivityForResult(intent, 2); 
    } 

私は私の画像が保存されている写真をキャプチャした後知っています。そして、私はスケーリングされたビットマップを作成することによってイメージのサイズを変更することができます!しかし、カメラインテントの場合、私が取得しているのはキャプチャされた画像のUriだけです。それから私はそれを保存しました。

しかし、私はどのように私はSAVE THENアンドロイドカメラ意図と からキャプチャPHOTOのサイズを変更することができ

を知りたいですか?

+0

どのようなサイズ比で、特定の比率ですか? 720 * 720のような?何 ? – W4R10CK

+1

不可不可。このようなカメラインテントを使用すると、常に画像が保存されます。カメラクラスを代わりに使用してください。 – greenapps

+0

イメージをファイルに保存するのではなく、200x200 ... any –

答えて

2

EXTRA_OUTPUTを使用しています。これは、カメラアプリケーションがその場所に画像を保存することを要求する。あなたの場合は、ファイルを指しているので、カメラアプリはそのファイルに画像を保存します。それはあなたにコントロールを返す前にそれを行います、そして、あなたはその前に画像のサイズを変更することはできません。

選択肢は次のとおりです。

  • ただその後、画像のサイズを変更します。

  • IntentからEXTRA_OUTPUTを削除します。その後、画像をファイルに保存するのではなく、に手渡されたIntentの余分の"data"を介してサムネイルサイズの画像を提供する必要があります。このサムネイルのサイズを変更する必要はありません。たとえそれがあっても、どこかに保存する前にサイズを変更することができます。

  • カメラアプリケーションから画像を受け取ってからContentProviderを実装し、サイズを変更してから保存してください。フルサイズのイメージを処理するのに十分なヒープスペースがない可能性があるため、これはうまくいかないでしょう。

+0

'のような任意の比率でイメージのサイズを変更するだけで、カメラアプリケーションはサムネイルサイズのイメージを表示する必要があります。それは両方を行います。 – greenapps

+0

@greenapps:それはカメラアプリに完全に依存します。よく書かれたカメラアプリは、サムネイルサイズの画像のみを提供します。悲しいかな、何千ものAndroidデバイスモデルにあらかじめインストールされている何百ものカメラアプリがあり、そのすべてのデベロッパーがドキュメントを読んでいるとは限りません。 – CommonsWare

+0

"extra_output"ではなく、Intentの "data"に依存する価値はありますか? AFAIKの両方のコンテンツは画像の解像度とサイズの点で大きな違いがありますか?私が間違っていれば私を修正してください。 – Hemang

関連する問題