2016-05-26 11 views
1

My Applicationは、カメラインテントを使用して画像をキャプチャします。イメージはファイルに "abc.jpg"として保存されます。 Picassoライブラリを使用して、画像のサイズを変更して圧縮しようとしています。私は出力を得ることはありません。私のコードは、ターゲットのonBitmapLoadedに到達することはありませんonBitmapFailedも。ここに私のコードです。Android用Picassoライブラリを使用して画像を圧縮する方法は?

public static final String DATA_PATH = Environment 
.getExternalStorageDirectory() + "/SnapReminder/"; 
File file1 = new File(DATA_PATH); 
file1.mkdirs(); 
String _path = DATA_PATH + "abc.jpg"; 
File file = new File(_path); 
Uri imageUri = Uri.fromFile(file); 
final Intent intent = new 
Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); 
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0); 
startActivityForResult(intent, 0); 



protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
super.onActivityResult(requestCode, resultCode, data); 
if (requestCode == 0) { 
    if (resultCode == RESULT_OK) { 
    Picasso.with(context) 
    .load(_path) 
    .resize(size, size) 
    .centerCrop() 
    .into(new Target() { 
     @Override 
     public void onBitmapLoaded(final Bitmap bitmap, Picasso.LoadedFrom 
     from) {    
         File file = new File(_path); 
         try { 
          file.createNewFile(); 
          FileOutputStream ostream = new FileOutputStream(file); 
          bitmap.compress(Bitmap.CompressFormat.JPEG, 100, ostream); 
          ostream.close(); 
         } catch (Exception e) { 
          e.printStackTrace(); 
         } 
        } 

        @Override 
        public void onBitmapFailed(Drawable errorDrawable) { 
        } 

        @Override 
        public void onPrepareLoad(Drawable placeHolderDrawable) { 
        } 
       }); 

} 
} 
} 
+0

このリンクを見ることができます:https://futurestud.io/blog/picasso-image-resizing-scaling-and-fit – rafsanahmad007

答えて

1

匿名クラスとしてターゲットを使用しないでください。オブジェクトを定義し、この参照をinto()関数に渡します。例えば:

Target myTarget = new Target(){...} 

、次いで、

Picasso.with(context) .load(_path).resize(size, size).centerCrop().into(myTarget); 

この理由は、匿名クラスは、ターゲットは、ガベージコレクションを取得することを意味本当に弱参照を与えることです。

それが機能するかどうか教えてください。

関連する問題