当前位置: 首页 > 面试题库 >

使用URL下载图像

东郭昌胤
2023-03-14
问题内容

我正在尝试使用我的应用程序中的URL和按钮下载图像。当我在手机上运行它时,我无法下载该图像。任何人都可以指出这个问题。我在这里先向您的帮助表示感谢 :)

这是我的代码。

public class MainActivity extends AppCompatActivity {

ImageView download;

public void downloadImage(View view){

    DownloadImage image = new DownloadImage();
    Bitmap result;
    try {
        result = image.execute("https://en.wikipedia.org/wiki/File:Bart_Simpson_200px.png").get();
        download.setImageBitmap(result);
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    download = (ImageView) findViewById(R.id.imageView);
}

public class DownloadImage extends AsyncTask<String, Void, Bitmap>{

    @Override
    protected Bitmap doInBackground(String... urls) {
        URL url;
        HttpURLConnection urlConnection = null;
        try {
            url = new URL(urls[0]);
            urlConnection = (HttpURLConnection) url.openConnection();
            urlConnection.setDoInput(true);
            urlConnection.connect();
            InputStream in = urlConnection.getInputStream();
            Bitmap Image = BitmapFactory.decodeStream(in);
            in.close();
            return Image;
        }
        catch (MalformedURLException e) {
            e.printStackTrace();
        }
        catch (IOException e) {
            e.printStackTrace();
        }
         return null;
    }
}
}

问题答案:

您可以通过两种方式从url下载图像

1。您
可以使用Glide库从url加载图像,看下面的代码,它可以轻松地为您提供帮助

编译这个库

   implementation 'com.github.bumptech.glide:glide:4.6.1'

而不是像这样加载图像

 Glide.with(MainActivity.this)
        .load(url)
        .apply(new RequestOptions().placeholder(R.drawable.booked_circle).error(R.drawable.booked_circle))
        .into(imageview);

2。如果您不想使用第三方库,请尝试此

 new DownloadImage(imamgeview).execute(url);

创建一个异步任务

public class DownloadImage extends AsyncTask<String, Void, Bitmap> {
ImageView bmImage;

public DownloadImage(ImageView bmImage) {
    this.bmImage = (ImageView ) bmImage;
}

protected Bitmap doInBackground(String... urls) {
    String urldisplay = urls[0];
    Bitmap mIcon11 = null;
    try {
        InputStream in = new java.net.URL(urldisplay).openStream();
        mIcon11 = BitmapFactory.decodeStream(in);
    } catch (Exception e) {
        Log.d("Error", e.getStackTrace().toString());

    }
    return mIcon11;
}

protected void onPostExecute(Bitmap result) {
    bmImage.setImageBitmap(result);
}
}

我希望它能适合您的情况



 类似资料:
  • 我试图下载一个图像从一个URL与Python使用请求和Shutil库。我的代码如下: 这段代码适用于我尝试过的大多数其他图像URL(例如:https://tinyjpg.com/images/social/website.jpg)但是,对于代码中的图像url,创建了一个1kb的文件,其中有一个错误:“看起来我们不支持此文件格式。” 我也尝试过: 可以使用Seleniumwire执行此操作-我使用的

  • 这是我为从url下载图像而编写的代码,但使用java.io.FileNotFoundException重新引用响应代码400

  • 问题内容: 我想从我的应用程序中的URL加载图像,因此我首先尝试使用Objective-C,但是它可以正常工作,但是对于Swift,我遇到了编译错误: ‘imageWithData’不可用:使用对象构造’UIImage(data :)’ 我的功能: 在Objective-C中: 有人可以解释一下为什么Swift无法使用它,以及如何解决该问题。 问题答案: Xcode 8或更高版本•Swift 3或

  • 我想从我的应用程序中的URL加载一个图像,所以我首先尝试使用Objective-C,它成功了,但是,使用Swift,我有一个编译错误: “imageWithData”不可用:使用对象构造“UIImage(数据:)” 我的职能: 在目标C中: 有人能给我解释一下为什么不能与Swift一起工作,以及我如何解决这个问题。

  • 问题内容: 我正在尝试编写一个脚本来使用node.js下载图像。这是我到目前为止的内容: 但是,我想使它更强大: 有图书馆这样做并且做得更好吗? 响应头是否有可能说谎(关于长度,关于内容类型)? 我还应该关注其他状态代码吗?我应该麻烦重定向吗? 我想我读过某个地方会不赞成使用编码。那我该怎么办? 我怎样才能在Windows上使用它? 还有其他方法可以使此脚本更好吗? 原因:对于类似于imgur的功

  • 我正在学习Python 4/5个月,这是我从零开始构建的第三个项目,但我不能自己解决这个问题。 此脚本为每个给定的url下载1个图像。我不能找到一个解决方案,如何实现线程池执行器或异步在这个脚本。我不知道如何链接与图像编号的url保存图像部分。我建立了我需要下载的所有网址的判决,但我实际上如何保存正确名称的图像?还有其他建议吗? 另外,目前的网址都是假的。 同步版本: URL列表: