2011-06-22 2 views
0

私は私のプログラムに2つの問題を抱えて:アンドロイド:活動結果の後にSDカードに画像を保存すると問題

 pictureTaken = (Bitmap) data.getExtras().get("data"); 
     ImageView im = (ImageView) findViewById(R.id.view); 
     im.setImageBitmap(pictureTaken); 

このディスプレイ: 1.Afterは写真を撮ると、これは私がonActivityResult()のために持っているものですサムネイル(表示時の画質が悪い)のみで、SDカードに保存すると小さな画像になります。私が必要とするのは、それを完全な解像度/品質で保存/表示することです。これを達成するために私は何を変えますか?

  1. 働き、ユーザが選択した画像を取得し、表示する:

    selectedImage = data.getData(); 
    ImageView im = (ImageView) findViewById(R.id.view); 
    im.setImageURI(selectedImage); 
    

をしかし、ユーザーが選んだ画像を保存するとき、それは(デバッガによって発見)ここにクラッシュ:

... 
File externalStorageFile = new File(dir, finalName); 
ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
//Error 
resourceImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes); 
byte b[] = bytes.toByteArray(); 
try { 
... 

また、ビットマップはAndroidで画像を保存できる唯一の方法ですか?

+0

スタックトレースが何を言うのでしょうか?投稿してください。 – SBerg413

答えて

0

チェックにサンプルのために、このリンクを使用しています。ギャラリーからの選択された画像がビットマップ範囲外例外を表示する場合は、画像をデコードする必要があります。

Scale Image to screen Size ....

Picking Image from gallery and Decode it .......

+0

nullPointerExceptionを取得しています...どこにも見つかりました!それはデコードしようとしたときです – Mark

+0

ビットマップbImage = BitmapFactory.decodeFile(selectedImage.getPath()); – Mark

+0

よろしく! 2番目のリンクをありがとう、それはデコードエラーで私を助けた。第1の問題に関しては、私はまだリンクをより完全に読んで、私が見つけることができるものを見る必要があります。また、私のアプリはハニカムに最適化されているので、ビットマップも設定する必要があります(bImage = Bitmap.createScaledBitmap(bImage、500、500、true);)? 500は大丈夫だと思いますが、写真をコンピュータに転送したい場合は、「ギャラリー」アプリと同じ/類似のサイズを使用しないでください。 – Mark

0

SDカードに画像を保存するためのは、以下のコード

String extStorageDirectory = Environment.getExternalStorageDirectory().toString(); 
    File file = new File(extStorageDirectory, imagename); 
    file.createNewFile(); 
    FileOutputStream fos = new FileOutputStream(file); 
    bm.compress(CompressFormat.JPEG, 75, fos); 
    fos.flush(); 
    fos.close(); 
+0

私が持っているこの部分は、節約がうまくいきます。ちょうど5mpカメラが自分のコードで80X80の写真を返しているということです。私は「データを入手していない」のは正しい方法ですか? – Mark

関連する問題