obter imagens Android de largura e altura da rede

Às vezes, precisamos mostrar a primeira rede para obter a largura da imagem e altura dos controles de imagem que o processamento de carga, como para exibir apenas uma parte da imagem por muito tempo, depois de clicar para mostrar todo o mapa, então como para obter a imagem do aspecto rede dele?

Um modo utilizando HttpURLConnection + BitmapFactory.Options

OOM causado pelo uso de BitmapFactory.Options única maneira de decodificar a fronteira para evitar a imagem inteira será carregado na memória recursos e resultar em ficar demasiado largura e altura da imagem

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);
    }

A segunda maneira, Glide uso

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")
    }
})

três maneiras

Para ser adicionado ...

Publicado 57 artigos originais · ganhou elogios 26 · vê 40000 +

Acho que você gosta

Origin blog.csdn.net/Ever69/article/details/104235785
Recomendado
Clasificación