首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如果我知道图片的URL,如何获取图片大小?Android (java)

在Android开发中,如果你知道图片的URL,可以通过以下步骤获取图片大小:

  1. 使用Java中的HttpURLConnection或者OkHttp等网络库,根据图片的URL发送HTTP请求,获取图片的字节流数据。
  2. 将获取到的字节流数据转换为Bitmap对象,可以使用BitmapFactory类的decodeStream()方法。
  3. 通过Bitmap对象的getWidth()和getHeight()方法,即可获取到图片的宽度和高度。

下面是一个示例代码:

代码语言:txt
复制
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class ImageSizeFetcher extends AsyncTask<String, Void, Integer[]> {

    private OnImageSizeFetchedListener listener;

    public ImageSizeFetcher(OnImageSizeFetchedListener listener) {
        this.listener = listener;
    }

    @Override
    protected Integer[] doInBackground(String... urls) {
        String imageUrl = urls[0];
        Integer[] imageSize = new Integer[2];
        try {
            URL url = new URL(imageUrl);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setDoInput(true);
            connection.connect();
            InputStream input = connection.getInputStream();
            Bitmap bitmap = BitmapFactory.decodeStream(input);
            imageSize[0] = bitmap.getWidth();
            imageSize[1] = bitmap.getHeight();
            bitmap.recycle();
            input.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return imageSize;
    }

    @Override
    protected void onPostExecute(Integer[] imageSize) {
        if (listener != null) {
            listener.onImageSizeFetched(imageSize[0], imageSize[1]);
        }
    }

    public interface OnImageSizeFetchedListener {
        void onImageSizeFetched(int width, int height);
    }
}

使用示例:

代码语言:txt
复制
String imageUrl = "https://example.com/image.jpg";
ImageSizeFetcher imageSizeFetcher = new ImageSizeFetcher(new ImageSizeFetcher.OnImageSizeFetchedListener() {
    @Override
    public void onImageSizeFetched(int width, int height) {
        // 在这里处理获取到的图片宽度和高度
        // width为图片宽度,height为图片高度
    }
});
imageSizeFetcher.execute(imageUrl);

这样,通过异步任务的方式,你可以在获取到图片大小后进行相应的处理。请注意,这只是获取图片大小的一种方法,实际开发中还可以根据具体需求选择其他适合的方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

android 如何获取手机的图片、视频、音乐

在android 开发中,很多时候,我们会需要调用到用户本机的照片、视频或者是音乐让用户选择,来进行我们APP对应的操作。...支持的视频格式) 12 13 //intent.setType(“video/*;image/*”);//同时选择视频和图片 14 startActivityForResult...,我demo 里设置的是 Select,弹出的这个框,作用是让用户选择,基于本机手机已经安装了的,能够打开当前文件的 应用。...举个例子,我要打开音乐,而我手机 同时 有 天天动听 和酷狗,那么它就会提示我,用酷狗还是天天动听。...还一种方法是,默认的直接打开: startActivityForResult(photoPickerIntent,1); 这种方法有时候会显示不出来,原因是,程序的运行的时候,检测到本机有多个音乐或者图片的总体类型

1.8K50
  • Android经典实战之如何获取图片的经纬度以及如何根据经纬度获取对应的地点名称

    心里种花,人生才不会荒芜,如果你也想一起成长,请点个关注吧。 在Android中,可以通过以下步骤获取图片的经纬度信息以及根据这些经纬度信息获取对应的地点名称。...从图片中提取地理位置信息(经纬度) ExifInterface是Android提供的一个类,用于处理JPEG文件中的Exif信息。...可以通过ExifInterface获取图片的元数据信息,包括地理位置信息。...以下是如何使用ExifInterface提取图片中的经纬度信息的示例代码: import androidx.exifinterface.media.ExifInterface; import java.io.IOException...同时Geocoder也要避免频繁创建,会比较耗内存 希望这些步骤和代码能帮助你在Android应用中实现图片地理位置信息的提取和地址反解析。如果有任何问题,欢迎进一步讨论。

    21510

    打个赌你可能不知道如何获取Java泛型的Class对象

    Java中的泛型有着很重要的作用,它能够让我们的数据容器类型安全,避免发生转换异常。...不过Java中的泛型也为人诟病,它会在编译中被全部转换成Object对象,也就是泛型擦除,这造成了诸多不便,除非你能获取泛型的一个实例,否则我们无法直接获取泛型的实际类型。...我们希望能够获取E的具体类型,也就是String。 让我们回到java.lang.reflect.Type ?...Type的实现类型 通过上图可以知道Type有四种类型: GenericArrayType 用来描述一个参数泛型化的数组。 WildcardType 用来描述通配符?相关的泛型,包含的?...那么问题来了如何封装一个工具类? 封装工具类 我们可以借助于抽象类来定义一个获取java.lang.reflect.ParameterizedType的工具类。

    20.7K41

    Glide-图片加载框架全解(一)- 基本用法

    加载图片 现在我们就来尝试一下如何使用Glide来加载图片吧。...在这里插入图片描述 也就是说,不管我们传入的是一张普通图片,还是一张GIF图片,Glide都会自动进行判断,并且可以正确地把它解析并展示出来。 但是如果我想指定图片的格式该怎么办呢?...那么既然指定了只允许加载动态图片,如果我们传入了一张静态图片的URL地址又会怎么样呢?试一下就知道了,将图片的URL地址改成刚才的必应美图,然后重新运行代码,效果如下图所示。 ?...在这里插入图片描述 没错,如果指定了只能加载动态图片,而传入的图片却是一张静图的话,那么结果自然就只有加载失败喽。 指定图片大小 实际上,使用Glide在绝大多数情况下我们都是不需要指定图片大小的。...也正是因为Glide是如此的智能,所以刚才在开始的时候我就说了,在绝大多数情况下我们都是不需要指定图片大小的,因为Glide会自动根据ImageView的大小来决定图片的大小。

    1.1K10

    5.25秒变0.023秒:小程序图片优化全攻略

    所以这里记录一下如何减少小程序图片的加载时间。...分析优化 这里我总结了一些常见图片优化策略,方法如下: pFpojp9.png 下面我们就根据总结的优化策略进行优化,具体如下: 优化1:使用webp格式的图片 首先我们知道,在小程序中是支持webp...这里我们还需要注意一下webp图片格式的支持范围,我这里使用的uni-app做为demo,查了一下文档,支持范围如下: Android4以上(含)、iOS14以上(含)系统内置支持webp,此时,不管web...优化4:合理使用占位图片 通常情况下,为了内容的动态展示,需要通过网络请求从接口中获取图片的url。...总结 关于小程序的图片优化,我们可以根据业务需求以及技术支持来选择不同的方案,这里我只列出了几个最常用的方案,如果业务需求比较复杂,可以多尝试一些方案。

    56110

    Android图片加载框架最全解析(一),Glide的基本用法

    加载图片 现在我们就来尝试一下如何使用Glide来加载图片吧。...也就是说,不管我们传入的是一张普通图片,还是一张GIF图片,Glide都会自动进行判断,并且可以正确地把它解析并展示出来。 但是如果我想指定图片的格式该怎么办呢?...那么既然指定了只允许加载动态图片,如果我们传入了一张静态图片的URL地址又会怎么样呢?试一下就知道了,将图片的URL地址改成刚才的必应美图,然后重新运行代码,效果如下图所示。 ?...没错,如果指定了只能加载动态图片,而传入的图片却是一张静图的话,那么结果自然就只有加载失败喽。 指定图片大小 实际上,使用Glide在绝大多数情况下我们都是不需要指定图片大小的。...也正是因为Glide是如此的智能,所以刚才在开始的时候我就说了,在绝大多数情况下我们都是不需要指定图片大小的,因为Glide会自动根据ImageView的大小来决定图片的大小。

    2.2K110

    每个人都要学的图片压缩终极奥义,有效解决 Android 程序 OOM

    同时我们都知道,Android 系统分配给我们每个应用的内存是有限的,由于解析、加载一张图片,需要占用的内存大小,是远大于图片自身大小的。...这时我们就引进了图片压缩的方案: 首先,获得原图片大小 其次,获取控件大小 接着,获取我们图片和控件的比例 最后,根据这一比例,将图片压缩为适合显示的大小 那么就让我们开始吧: 获取原图大小 ----...这里我给大家举个例子,比如我这有张 4000*1000 像素的图片: 当我们把 inSampleSize 的值设为 4时,最后生成出来的图片大小将会是:1000 x 250 像素 当我们把inSampleSize...,我跪搓衣板 Android 自定义时钟控件 时针、分针、秒针的绘制这一篇就够了 android 自定义控件之-绘制钟表盘 请点赞!...因为你的鼓励是我写作的最大动力! ---- 源码 Demo 链接:Drop 我第一次写的 Android 项目,希望大家点歌 star~ 谢谢!

    41120

    android webview加载html图片自适应手机屏幕大小&点击查看大图

    我们在开发中,显示信息详情时,一般后台会给出html文本,在android端一般采用webview控件来展示,但是后台给出的html文本一般是给电脑端用的,没有自适配手机,导致手机端图片显示过大,需要左右移动来查看全图...webSettings.setSupportZoom(true); // 可以缩放 下面介绍三种常用的方法: 方法一:直接替换html文本中img标签下图片大小 如果html中图片没有设置大小,可以采用下面简单方法...) {        super.onPageFinished(view, url);        imgReset();//重置webview中img标签的图片大小        // html加载完成之后...img节点,并添加onclick函数,函数的功能是在图片点击的时候调用本地java接口并传递url过去 bindingView.contentWv.loadUrl("javascript...,遍历所有的img节点,并添加onclick函数,函数的功能是在图片点击的时候调用本地java接口并传递url过去        bindingView.contentWv.loadUrl("javascript

    6.4K10

    android 优化之Bitmap优化

    一旦内存分配给Java后,以后这块内存即使释放后,也只能给Java的使用,所以如果Java突然占用了一个大块内存, 即使很快释放了,C能用的内存也是16M减去Java最大占用的内存数。...在Android应用里,最耗费内存的就是图片资源。 在Android系统中,读取位图Bitmap时,分给虚拟机中的图片的堆栈大小只有8M,如果超出了,就会出现OutOfMemory异常。...使用BitmapFactory.Options.inSampleSize就可以缩小图片。属性值inSampleSize表示缩略图大小为原始图片大小的几分之一。...即如果这个值为2,则取出的缩略图的宽和高都是原始图片的1/2,图片的大小就为原始大小的1/4。 如果知道图片的像素过大,就可以对其进行缩小。那么如何才知道图片过大呢?...通过这两个值,就可以知道图片是否过大了。

    1.4K70

    深入理解Glide(1)——Glide的使用

    在Android开发过程中,我们常常需要涉及大量的图片加载,图片加载框架设计,是Android高级开发工程师必备的技能,本节将通过分析Glide图片加载框架,来学习如何设计一个图片加载框架。...> 图片加载 最简单的图片加载代码如下: Glide.with(context).load(url).into(imageView); 涉及的函数说明: 1.with:重载方法,可传入context...指定图片大小 Glide默认会根据ImageView的大小决定图片的大小,保证图片不会导致OOM,但我们还可以在加载时候就指定图片大小 RequestOptions options = new RequestOptions...).apply(options).into(imageView); 注意:当我们使用override制定图片大小后,最终展示在imageview的效果,是与imageview的scanType叠加的效果...图,如果图片不是GIF格式则会按error处理 设置缓存 Glide缓存的设计是三级缓存,两级内存缓存和一级硬盘缓存,默认情况下开启了内存缓存和硬盘缓存,如果需要将内存缓存禁掉,可以使用如下代码:

    76240

    在Android中高效的加载大图

    大家都知道,Android系统的内存有限。我们必须牢记这一点。 stackoverflow上有很多关于大图加载的问题,当你的应用程序遇到OOM的时候,你可以选择直接复制粘贴其中的答案来解决这个问题。...因此,你完全可以略过本篇文章,但我想介绍一些加载大图的基础知识及其实际工作的原理。 我只想解释图片解码背后的逻辑。我建议你使用Picasso或Glide来加载图片。没有必要重新发明轮子。...这句代码是指我们不想将图片加载到内存中。我们只想获取图片的相关信息(宽度,高度等),并使用这些信息来计算缩放比例。...不能,因为我们不知道图片大小是多少。如果它是小图片,并且我们使其更小,那么我们的用户看到的就是一些像素而不是图像。有一些图片需要缩放5倍,另一些图片则需要缩放2倍。...我们不能将缩放比设置为一个常数,所以我们必须根据图片的大小来计算它的值。 如何计算inSampleSize的值取决于您。我的意思是,你可以根据你的需要编写inSampleSize的计算方法。

    82820

    listview优化(中)

    1,对Imageview使用setTag()方法来解决图片错位问题,这个Tag中设置的是图片的url,然后在加载的时候取得这个url和要加载那position中的url对比,如果不相同就加载,相同就是复用以前的就不加载了...2,对于要加载的图片资源,先在内存缓存中找(原始的方法是使用SoftRefrence,最新的方法是使用android提供的Lrucache),如果找不到,则在本地缓存(可以使用DiskLrucache...类)中找(也就是读取原先下载过的本地图片),还找不到,就开启异步线程去下载图片,下载以后,保存在本地,内存缓存也保留一份引用 3,在为imagview装载图片时,先测量需要的图片大小,按比例缩放 4...,取消所有图片加载线程,一旦停下来,继续可见图片的加载线程 下面都是我摘取的网上的一些例子,我分别介绍它们来说明上述的优化思路 第一个例子: public class MemoryCache {  ...这个类只是根据url名创建并返回了一个File类,没有真正的缓存图片,图片缓存在ImageLoader类中,不过这个类要获取FileCache返回的File来做FileOutputStream的目的地.

    1.1K100

    图片去霾算法实践】NDK下二维数组的传递

    去霾前的图片 ? 去霾算法处理后的图片 不知道是不是算法太复杂,还是Java效率相对较低的缘故,一个3M的JPG图片处理下来需要近20秒的时间。...效果明显的算法让我萌生了开发一款去霾相机的想法,为了获得更快的处理速度,在研究Java去霾算法代码后,我决定将其写成C++代码,然后通过NDK(Android原生开发)移植到Android平台。...项目的基本思想是在Android/Java下获得图片的Bitmap将其像素点转成二维的int二维数组,然后将int二维数组传入JNI层,交给NDK层C++代码处理,NDK层处理完毕后返回去霾后的int二维数组...经过一天的奋斗,我终于实现了用C++代码实现“去霾”算法并顺利移植到Android原生开发中。效果已实现,目前还有很多BUG,图片大小稍大时算法耗费的时间和内存过大....如果你对去霾算法实践感兴趣,可以关注我的简书和博客:http://wangbaiyuan.cn ,后续将持续更新 本篇文章介绍NDK和Java层怎样互传二维数组 NDK->C++ ndkArray[mHeight

    48730

    高性能图片优化方案

    创建流程1.8 图片框架如何设计02.图片内存计算方式2.1 如何计算占用内存2.2 上面计算内存对吗2.3 一个像素占用内存2.4 使用API获取内存2.5 影响Bitmap内存因素2.6 加载xhdpi...图片大小vs图片内存大小一张 png 或者 jpg 格式的图片大小,跟这张图片加载进内存所占用的大小完全是两回事。...glide设置显示的时候可以添加动画效果02.图片内存计算方式2.1 如何计算占用内存如果图片要显示下Android设备上,ImageView最终是要加载Bitmap对象的,就要考虑单个Bitmap对象的内存占用了...缓存的入口从shouldInterceptRequest出发第一步,拿到WebResourceRequest对象中请求资源的url还有header,如果开发者设置不缓存则返回null第二步,如果缓存,通过...url判断拦截资源的条件,过滤非http,音视频等资源,这个是可自由配置缓存内容比如css,png,jpg,xml,txt等第三步,判断本地是否有OkHttp缓存数据,如果有则直接读取本地资源,通过url

    90830

    App极限瘦身: png 打包前自动化转换 webp

    精彩内容不容错过~ 前言 大家都知道 png 是比较占用App体积的,有没有工具可以在打包前(比如 assembleDebug、assembleRelease)自动去转化所有的 png 图片,包括第三方依赖库里面的呢...之前不经意间发现有一个神器cwebp 转化工具,是不是可以借鉴这种工具自己写个Plugin完成图片转换,同时支持检查大图片,图片大小可配置。...自动化转换工具Task 的执行时机点? 如何检查大图片,并配置图片大小,自动化开启图片转换开关?...如果添加了图片白名单或者文件不是图片格式,过滤 如果图片尺寸合规,并且图片是大图,大图白名单没有图片,添加到大图列表 否则添加到图片目录 /** * 过滤图片...,图片转换方式借助的是Google开源工具cwebp,当然我们可以通过白名单方式规范图片尺寸大小和插件开关,如果你掌握本文内容,不仅会对你们公司应用瘦身有所帮助,同时也能弥补你对 Gradle Plugin

    2.4K00
    领券