2011-07-26 13 views
0

私はちょっとした問題があります。ビットマップファイルをsdcardや他のどこかで解読した後に保存する方法が見つかりませんでした。現在使用しているコードはAndroidでビットマップを保存および表示する方法は?

です
public class SimpleCryptoActivity extends Activity { 
    private static final int IO_BUFFER_SIZE = 4 * 1024; 
    @Override 
    public void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

       try { 
        AssetManager am = this.getAssets(); 
        InputStream is = am.open("2000_1.jpg_encrypted"); // get the encrypted image from assets folder 

        ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
        byte[] b = new byte[IO_BUFFER_SIZE]; 
        int read; 
        while ((read = is.read(b)) != -1) { //convert inputstream to bytearrayoutputstream 
         baos.write(b, 0, read); 
        }       
       long start = System.currentTimeMillis()/1000L; // start 

        byte[] keyStart = "MARTIN_123_MARTIN_123".getBytes(); // specific key value 
        KeyGenerator kgen = KeyGenerator.getInstance("AES"); //aes 
        SecureRandom sr = SecureRandom.getInstance("SHA1PRNG"); 
        sr.setSeed(keyStart); 
        kgen.init(128, sr); 
        SecretKey skey = kgen.generateKey(); 
        byte[] key = skey.getEncoded();  

        byte[] decryptedData = decrypt(key,b); //decryption 
       long end = System.currentTimeMillis()/1000L; // end 
       Log.i("TEST","Time start "+ String.valueOf(start)); //showing the strat in ms 
       Log.i("TEST","Time end "+ String.valueOf(end));  //showing the end in ms 
        Bitmap bitmap = BitmapFactory.decodeByteArray(b , 0, b .length); //decoding bytearrayoutputstream to bitmap 



        is.close(); // close the inputstream 
        baos.close(); // close the bytearrayoutputstream 
       } 
       catch(Exception e){ 
        e.fillInStackTrace(); 
       } 
      } 

      //decrypt 
      private byte[] decrypt(byte[] raw, byte[] encrypted) throws Exception { 
       SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); 
       Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); 
       cipher.init(Cipher.DECRYPT_MODE, skeySpec); 
       byte[] decrypted = cipher.doFinal(encrypted); 

      return decrypted; 
      } 
} 

別の質問too.I'm私はLogCat.Amで

Log.i("TEST","Time start "+ String.valueOf(start)); //showing the strat in ms 
       Log.i("TEST","Time end "+ String.valueOf(end));  //showing the end in ms 

を見ることができない理由は好奇心、私は助けてくれてありがとうと何か間違ったことか...?!

答えて

0

:ファイルにバイトを書き込むために。あなたのレイアウトでImageViewを追加し、

ImageView mydecrptimg = (ImageView)findViewById(R.id.imageview); 

mydecrptimg.setImageBitmap(yourbitmap); 

を行うか、MediaStoreにそれを保存することができます。 (「ビットマップビットマップ= BitmapFactory.decodeByteArray:その後、私はこれを保存したいあなたImageView

private class DrawMyBitmap extends ImageView{ 

     private Bitmap bmp = null; 
     public DrawMyBitmap(Context context, Bitmap mybmp) { 
      super(context); 
      this.bmp=mybmp; 
     } 

     @Override 
     protected void onDraw(Canvas canvas) { 

      Paint paint = new Paint(); 

      paint.setFilterBitmap(true); 
      paint.setAntiAlias(true); 

      Rect bmprect = new Rect(0 ,0 , bmp.getHeight(), bmp.getWidth()); 
      canvas.drawBitmap(bmp, null, bmprect, paint); 
      super.onDraw(canvas); 
     } 
+0

私はimageViewでそれをやった、エラーはありません画像は表示されません。 – hardartcore

+0

私は 'private class'を作成し、それを' ImageView'に拡張し、 'onDraw()'を使って仕事をするようなことをしようとしています。 –

+0

私は本当にそれを取得しないため、正確に私はこのコードを追加する必要があります私に表示することはできますか?ありがとう! – hardartcore

-1

どこに書きたいファイルを設定しますか?

マニフェストにWRITE_EXTERNAL_STORAGE権限がありますか?

Logcatにフォーカスがない場合は、DDMSパースペクティブにアクセスし、アプリが実行されていることをエミュレータでクリックしてください。 Logcatコンソールの右端にあるDebugの出力レベルをLogに設定します。

編集:あなたはすべてのSDまたは任意のストレージに保存した場合、それは重要ではない場合

FileOutputStream fos = new FileOutputStream(strFilePath); 
    fos.write(bytes); 
    fos.close(); 
+0

のためにインスタンス化し、あなたの現在のクラス内でこのクラスを置く:このプロバイダの詳細ここ

http://developer.android.com/reference/android/provider/MediaStore.Images.Media.html

編集を読みますb、0、b .length); '私はファイルを保存する方法がわからないので、ImageViewのバックグラウンドとして配置しようとしましたが、機能していないので、後で見ることができるどこかに保存する必要があります。問題はありません。はい、私はマニフェストファイルに権限が追加されています。 – hardartcore

+0

あなたはLogCatについてあなたが言ったことはすべてやったが、それでも私のメッセージは表示されません。 – hardartcore

+0

TESTという名前のFilterを作成していて、そこにメッセージが表示されている可能性があります。 –

関連する問題