images obtenir Android du réseau largeur et la hauteur

Parfois, nous devons montrer le premier réseau pour obtenir la largeur de l'image et la hauteur des contrôles d'image ne charge de traitement, par exemple pour l'affichage seulement une partie de l'image trop longtemps, après avoir cliqué sur pour afficher la carte entière, alors comment obtenir l'image de l'aspect réseau de celui-ci?

Un mode utilisant HttpURLConnection + BitmapFactory.Options

OOM causés par l'utilisation BitmapFactory.Options seule façon de décoder la frontière afin d'éviter toute l'image sera chargée dans les ressources mémoire et le résultat à obtenir trop de largeur et la hauteur de l'image

public static void getPicSize(String url, onPicListener listener) {
        mPicFixThreadPool.execute(() -> {
            HttpURLConnection connection;
            try {
                connection = (HttpURLConnection) new URL(url).openConnection();
                InputStream inputStream = connection.getInputStream();
                int[] imageSize = getImageSize(inputStream);
                mMainHandler.post(() -> listener.onImageSize(imageSize[0], imageSize[1]));
                inputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        });
    }

    private static int[] getImageSize(InputStream is) {
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inJustDecodeBounds = true;
        BitmapFactory.decodeStream(is, null, options);
        int[] size = new int[2];
        size[0] = options.outWidth;
        size[1] = options.outHeight;
        LogUtil.i("--------------------width = " + size[0] + ",height = " + size[1]+"--------------------");
        return size;
    }

 public interface onPicListener {
        void onImageSize(int width, int height);
    }

Deuxième façon, l'utilisation Glide

Glide.with(mContext).asBitmap().load(url).into(object : BitmapImageViewTarget(imageView) {
    override fun onResourceReady(resource: Bitmap, transition: Transition<in Bitmap>?) {
        super.onResourceReady(resource, transition)
        val width = resource.width
        val height = resource.height
        Log.i("kkk", "width = $width,height = $height")
    }
})

trois façons

A ajouter ...

Publié 57 articles originaux · a gagné les éloges 26 · vues 40000 +

Je suppose que tu aimes

Origine blog.csdn.net/Ever69/article/details/104235785
conseillé
Classement