2016-11-07 4 views
-3

私はvolleyとbitmapの助けを借りてサーバに画像をアップロードし、データを正常に渡しますが、カメラを使用して画像を撮影すると、 500KBを超えるサイズの画像を渡すと、アプリがクラッシュするようになります。なぜこれが起こるのですか? は、誰もが、これは私のカメラの意図がイメージに影響を与えずにテキストをサーバにアップロードする方法

private void onCaptureImageResult(Intent data) { 
    thumbnail = (Bitmap) data.getExtras().get("data"); 

    File destination = new File(Environment.getExternalStorageDirectory(), 
      System.currentTimeMillis() + ".jpg"); 

    FileOutputStream fo; 
    try { 
     destination.createNewFile(); 
     fo = new FileOutputStream(destination); 
     //fo.write(bytes.toByteArray()); 
     fo.close(); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    if (thumbnail!=null){ 
     addImageNew.setImageBitmap(thumbnail); 
    } 


} 

が、これは私のギャラリーの意図は、私は文字列にビットマップを変換する方法を

private void onSelectFromGalleryResult(Intent data) { 
    thumbnail=null; 
    if (data != null) { 
     try { 
      thumbnail = MediaStore.Images.Media.getBitmap(getApplicationContext().getContentResolver(), data.getData()); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
    if (thumbnail!=null){ 
     addImageNew.setImageBitmap(thumbnail); 
    } 
} 

これを行う方法です行う方法です

、私を助けることができる

public String getStringImage(Bitmap bmp){ 
    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    bmp.compress(Bitmap.CompressFormat.JPEG, 90, baos); 
    byte[] imageBytes = baos.toByteArray(); 
    String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT); 
    return encodedImage; 
} 

注:私は画質と高サイズの画像passinにのみ問題がありますg

答えて

0

以下のリンクソリューションを試すことができます。それはあなたのために働くかもしれません。

200kb image to base64 cannot send to web service

+0

iは、パスの文字列に隠れたビットマップにgetStringImage()を使用してお返事ありがとうございましたが、私は私のproblm – Sam

0

私が呼ばれる場所getStringImage(Bitmap bmp)見つけられませんでしたが、あなたはそのような何かしようとすることができます:

BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inSampleSize = 1; 
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length, options); 
getStringImage(bitmap); 

をそれともあなたは、高品質のために、compress 100に変更することができます。

bmp.compress(Bitmap.CompressFormat.JPEG, 100, baos); 
+0

をsovleカントサーバー 文字列イメージ= getStringImage(サムネイル); /**他のコード**/ params.put(KEY_IMAGE、image); //画像をサーバーに渡す – Sam

関連する問題