首页
学习
活动
专区
工具
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.7K50

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

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

10810

Android整理好图片压缩工具类

Android设备内存有限,对于大图片,必须进行压缩后再进行显示,否则会出现内存溢出:OOM; 处理策略: 1.使用缩略图(Thumbnails); Android系统会给检测到图片创建缩略图;可以操作...,此时图片大小有可能超出我们期望限制;假如我们有严格大小限制需求,可先进行按比例缩放后,判断此时图片大小是否超出限制;如果超出限制,对其再进行质量缩放即可。...java.io.IOException; import java.io.InputStream; import android.graphics.Bitmap; import android.graphics.Matrix...url,通过压缩图片尺寸来压缩图片大小 * @param pathName 图片完整路径 * @param targetWidth 缩放目标宽度 * @param targetHeight 缩放目标高度...,只是获取图片头部信息,包含宽高等; Bitmap bitmap = BitmapFactory.decodeFile(pathName, opts); // 得到图片宽度、高度; int imgWidth

1.9K20

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

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

18.5K41

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

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

1K10

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

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

38910

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

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

1.4K110

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

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

37520

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.2K10

android 优化之Bitmap优化

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

1.3K70

深入理解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效果,是与imageviewscanType叠加效果...图,如果图片不是GIF格式则会按error处理 设置缓存 Glide缓存设计是三级缓存,两级内存缓存和一级硬盘缓存,默认情况下开启了内存缓存和硬盘缓存,如果需要将内存缓存禁掉,可以使用如下代码:

69940

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

Android中高效加载大图

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

80720

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

去霾前图片 ? 去霾算法处理后图片知道是不是算法太复杂,还是Java效率相对较低缘故,一个3MJPG图片处理下来需要近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

48130
领券