2

所以我希望能夠從我的S3存儲搶我的圖片和(使用滑行或畢加索),其圖像加載到ImageView的。 (我不想將該圖像下載到我的手機中)。如何將圖片從aws s3下載到imageview?

目前,我有這樣的:

downloadButton = (Button) findViewById(R.id.cognito_s3DownloadButton); 
     downloadButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) 
      { 
       File file = new File(Environment.getExternalStorageDirectory().toString() + "/" + "fromAWS"); 
       observer = transferUtility.download("zivit-card-images","image1", file); 
       Glide.with(getBaseContext()).load("image in byes? or url?").centerCrop().into(myImageView); 
      } 
     }); 

再次,我如何從S3檢索圖像並將其插入到一個ImageView的?

+0

您傳遞文件參考'transferUtility.download()',那該文件到傳輸工具將在S3對象下載到。 – Karthik

回答

1

使用Glide或Picasso時,您不必擔心image將被保存的位置。畢加索或滑翔需要照顧的Caching,這樣你就不必。

現在,您只需使用Glide或Picasso將圖像設置爲ImageView即可。圖像URL。我想你想從您的S3存儲使用的圖像,那麼你需要從您的S3存儲,這樣的事情有一個形象:

https://a2.muscache.com/im/pictures/9c66dcc5-6d39-43b3-82ec-72e9d119f873.jpg 

那麼所有你需要用你的代碼做的是:

downloadButton = (Button) findViewById(R.id.cognito_s3DownloadButton); 
    downloadButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Glide.with(getBaseContext()) 
       .load("https://a2.muscache.com/im/pictures/9c66dcc5-6d39-43b3-82ec-72e9d119f873.jpg") 
       .centerCrop() 
       .into(myImageView); 
     } 
}); 
+0

從TransferObserver對象,我怎麼搶圖片的網址?一般來說,獲取圖像s3網址的方法是什麼?你能否把它包含在你的代碼中? –

+1

對不起,我沒有S3的經驗,你需要自己處理S3的東西,但是,S3圖片的URL應該像其他圖片的URL一樣,所以下面的代碼也適用於S3圖片。 –

+0

是的,那很好,那很好。欣賞迴應 –

2
public String downloadimage() 

    { 

     Calendar cal = Calendar.getInstance(); 
     cal.setTime(new Date()); 
     cal.add(Calendar.HOUR, +1); 
     Date oneHourLater = cal.getTime(); 
     AmazonS3 s3 = new AmazonS3Client(credentialsProvider); 
     URL url = s3.generatePresignedUrl(
       "testproject12345", 
       "first.jpg", 
       oneHourLater 
     ); 
     Log.e("url was", url.toString()); 
     String urlstring = url.toString(); 
     return urlstring; 
    } 

catch that function in your activity 


download = (Button)findViewById(R.id.download); 
     final ImageView imageview = (ImageView) findViewById(R.id.image); 
     download.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

download1 = new Uploader(getmain().getCredentialsProvider(),getApplicationContext()); 


       String url = download1.downloadimage(); 
       Picasso.with(getApplicationContext()) 
         .load(url) 
         .into(imageview); 


      } 
     });