Android Studio 如何从URL设置ImageBitmap(https)(java)

xe55xuns  于 2023-05-01  发布在  Android
关注(0)|答案(1)|浏览(132)

我使用这个函数将url转换为bitmap:

public static Bitmap getBitmapFromURL(String src) {
        try {
            URL url = new URL(src);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setDoInput(true);
            connection.connect();
            InputStream input = connection.getInputStream();
            Bitmap myBitmap = BitmapFactory.decodeStream(input);
            return myBitmap;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }

然后我使用了setImageBitmap,但是我的应用程序没有启动,你能告诉我一些方法来存储图像到sqlite吗?

h79rfbju

h79rfbju1#

有很多很好的用法获取图像也我不知道你的用例是什么。
需要互联网许可!

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

第一个解决方案

如果你使用Java。我将使用RxJava来实现这一点。

public static Observable<Bitmap> fetchImage(String rawUrl) {
    return Observable.create((ObservableOnSubscribe<Bitmap>) emitter -> {
        try {
            URL url = new URL(rawUrl);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setDoInput(true);
            connection.connect();
            InputStream input = connection.getInputStream();
            emitter.onNext(BitmapFactory.decodeStream(input));
            emitter.onComplete();
        } catch (IOException e) {
            emitter.onError(e.fillInStackTrace());
        }
    });
}

您还需要实现RxJava
这里你怎么称呼它

Observable<Bitmap> requestImage = fetchImage("https://www.freecodecamp.org/news/content/images/2022/09/jonatan-pie-3l3RwQdHRHg-unsplash.jpg");
    requestImage.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer<Bitmap>() {
        @Override
        public void onSubscribe(@NonNull Disposable d) {

        }

        @Override
        public void onNext(@NonNull Bitmap bitmap) {
                  // set bitmap to ImageView here.
        }

        @Override
        public void onError(@NonNull Throwable e) {

        }

        @Override
        public void onComplete() {

        }
    });

其次

我可以推荐Glide

Glide.with(this)
            .asBitmap()
            .load("https://www.freecodecamp.org/news/content/images/2022/09/jonatan-pie-3l3RwQdHRHg-unsplash.jpg")
            .into(new BitmapImageViewTarget(imageView));

对于滑动它设置图像直接或您可以设法设置它在回调

**第三个是Asynctask(弃用)**注意:还有一个这个3

相关问题