Как быстро преобразовать URL изображения в растровое изображение и сохранить? - PullRequest
0 голосов
/ 11 июня 2018

Получить bitmap с изображения url занимает слишком много времени при использовании - BitmapFactory.decodeStream(url.openConnection().getInputStream())

Есть ли лучший способ конвертировать URL в bitmap и сохранить image на устройстве?Потому что мое приложение должно работать в автономном режиме.Я использовал несколько методов для сохранения изображений, таких как asynctask, Picasso и т. Д. Все это занимает слишком много времени.Вот почему я должен был задать этот вопрос.

Ответы [ 3 ]

0 голосов
/ 11 июня 2018

Можно использовать Пикассо .Его легко использовать для загрузки Bitmap из Url и кэширования их.

Таким образом, это экономит ваше время.

Просто добавьте эту строку.

Picasso.with(getContext()).load(Uri).into(ImageView);
0 голосов
/ 11 июня 2018
Glide.with(this)
                        .load(strUrl)
                        .into(new SimpleTarget<Drawable>() {
                            @Override
                            public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
                                saveMyBitmap(((BitmapDrawable) resource).getBitmap());
                            }
                        });

Загрузка растрового изображения из URL-адреса изображения, как это ..

0 голосов
/ 11 июня 2018

Попробуйте этот код. Он работает ... Он загрузит изображение с URL-адреса и сохранит его на SD-карте в мобильном телефоне

try
 {   
      URL url =  new URL("Enter the URL to be downloaded");
  HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
  urlConnection.setRequestMethod("GET");
  urlConnection.setDoOutput(true);                   
  urlConnection.connect();                  
  File SDCardRoot = Environment.getExternalStorageDirectory().getAbsoluteFile();
  String filename="downloadedFile.png";   
  Log.i("Local filename:",""+filename);
  File file = new File(SDCardRoot,filename);
  if(file.createNewFile())
  {
    file.createNewFile();
  }                 
  FileOutputStream fileOutput = new FileOutputStream(file);
  InputStream inputStream = urlConnection.getInputStream();
  int totalSize = urlConnection.getContentLength();
  int downloadedSize = 0;   
  byte[] buffer = new byte[1024];
  int bufferLength = 0;
  while ( (bufferLength = inputStream.read(buffer)) > 0 ) 
  {                 
    fileOutput.write(buffer, 0, bufferLength);                  
    downloadedSize += bufferLength;                 
    Log.i("Progress:","downloadedSize:"+downloadedSize+"totalSize:"+ totalSize) ;
  }             
  fileOutput.close();
  if(downloadedSize==totalSize) filepath=file.getPath();    
} 
catch (MalformedURLException e) 
{
  e.printStackTrace();
} 
catch (IOException e)
{
  filepath=null;
  e.printStackTrace();
}
Log.i("filepath:"," "+filepath) ;
return filepath;
...