`
Dong_Android
  • 浏览: 27454 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

计算从网络上请求图片的大小(宽高)

阅读更多

通常在开发Android显示网络图片时,通常会遇到因手机屏幕大小的不同,显示图片变形的问题。所以我们在显示图片时通过获取图片的大小,再计算出控件应该显示的大小,这样图片显示不会出现拉伸的问题。以下就是怎样获取网络图片大小的方法,希望能帮助大家!

 

// 定义一个网页图片的路径

String url = ”http://www.kksdapp.com/data/upload/552730a23a335.jpg“;

 

// 根据图片地址获取图片输出流方法

// 注:使用该方法时要在异步类中调用该方法

public static InputStream getInputStream(Context context, String path){

     InputStream inputStream = null;
     HttpURLConnection httpURLConnection = null;
     String bitmapUrl = null;
     bitmapUrl = path;
     try {
           URL url = new URL(bitmapUrl);
           if(!StringUtil.isNull(url.toString())){
                 httpURLConnection = (HttpURLConnection) url.openConnection();
                 // 设置连接网络的超时时间
                 httpURLConnection.setConnectTimeout(5000);
                 // 打开输入流
                 httpURLConnection.setDoInput(true);
                 // 设置本次Http请求使用的方法
                 httpURLConnection.setRequestMethod("GET");
                 if (200 == httpURLConnection.getResponseCode()){
                         // 从服务器获得一个输入流
                        inputStream = httpURLConnection.getInputStream();
                 }else{
                        Log.v("inputStream", url+"_链接失败");
                 }
          }
      } catch (Exception e) {
          Log.w("url", e.toString());
          e.printStackTrace();
      }
      return inputStream;
 }

 

// 页面启动异步类调用上面的方法,并将获得的图片输出流转化成bitmap格式,再获取图片的大小

 public static Integer[] getIntentPicSize(final Context context, final String url){
       final Integer[] size = new Integer[2];
       new AsyncTask<Void, Void, Bitmap>() {
           @Override
           protected Bitmap doInBackground(Void... params) {
           System.out.println("url : " + url);
           InputStream is = DownloadBitmap.getInputStream(context, url);
           if (is != null) {
               return BitmapFactory.decodeStream(is);
           } else {
               eturn null;
           }
       }
      @Override
      protected void onPostExecute(Bitmap bitmap) {
            if (bitmap == null) {
                bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.member_home_bg);
            }
           size[0] = bitmap.getWidth();
           size[1] = bitmap.getHeight();
           System.out.println("bitmap.getWidth() : " + bitmap.getWidth());
           System.out.println("bitmap.getHeight() : " + bitmap.getHeight());
           super.onPostExecute(bitmap);
       }
    }.execute();
       return size;
 }

 

 

分享到:
评论

相关推荐

    IOS 获取网络图片的大小

    然而,这个大小包含了所有数据,包括可能的编码信息,不是直接的像素宽高。另一种头字段`Content-Type`可以告诉我们图片的类型,如JPEG或PNG,这在解码图片尺寸时是有用的。但这种方法并不能直接获取到像素尺寸。 ...

    IOS 获取网络图片大小实例详解

    这个过程通常涉及到网络请求、图片格式识别以及数据解析等多个步骤。以下是对标题和描述中提及的知识点的详细解释: 1. **网络请求**: - 使用`NSURL`类来构建URL对象,无论输入是`NSString`还是`NSURL`。 - 创建...

    swift-XLPhotoWall是一个用于展示图片宽高自动布局的库

    这种照片墙布局允许图片根据它们自身的宽高比自动调整大小和位置,从而在不同尺寸的屏幕上呈现出美观且一致的显示效果。 XLPhotoWall库的核心功能在于它的自动布局算法。它能够智能地计算每个图片视图的大小和位置...

    Android Bitmap网络图片下载

    - `HttpURLConnection`或第三方库如`Volley`、`OkHttp`、`Retrofit`等提供了更高效、更方便的网络请求方式,可以优化图片下载性能并支持异步操作。 - 使用`AsyncTask`或`IntentService`来避免主线程阻塞,保证用户...

    图片按宽高比及清晰度比率压缩转换为base64

    总的来说,"图片按宽高比及清晰度比率压缩转换为base64"是一种有效的图片优化策略,它结合了图片尺寸调整、质量控制和base64编码,以达到在保持图片质量的同时,减小文件大小,提高网页加载速度。这个过程涉及到了...

    PHP高效获取远程图片尺寸和大小的实现方法

    在互联网应用中,经常需要处理图片资源,而图片的尺寸和大小是进行各种操作(例如调整图片大小、计算页面布局)时的重要参数。在本地图片处理中,我们可以直接使用PHP的内置函数如getimagesize()来获取尺寸信息。...

    图片加载器

    1. 内存溢出:大量图片可能导致内存占用过高,需合理控制图片大小和数量,适时释放内存。 2. 图片变形:确保图片的宽高比正确,防止拉伸或压缩导致变形。 3. 网络延迟:在网络不稳定时,应提供良好的加载反馈,如...

    android 瀑布流图片显示

    Glide以其高效和易用性受到开发者欢迎,它能够处理内存和磁盘缓存,自动调整图片大小,适应不同屏幕尺寸。 2. **RecyclerView**: 为了展示图片,我们通常使用RecyclerView代替ListView,因为RecyclerView更高效且...

    Android 使用Glide加载网络图片等比例缩放的实现方法

    在`transform()`方法中,我们首先获取原始图片的宽高,然后获取ImageView的宽度,计算缩放比例,并根据比例创建一个新的等比例缩放的Bitmap。`getId()`方法用于返回此`Transformation`的唯一标识,以便Glide能够正确...

    dotnet-JinFileServer可以让你在只保存一张原图的情况下无侵入的给现有netcore项目添加动态生成图片功能可以生成任意大小

    在性能方面,JinFileServer优化了图片处理流程,减少了内存占用,并且支持缓存机制,对于频繁请求的图片,系统会自动将处理后的结果存储起来,避免重复计算,从而提高了服务响应速度。 在安全方面,JinFileServer也...

    swift-仿小红书详情顶部.头部视图高度图片高度可变控件

    在实际应用中,你可能会用到网络请求来获取图片,因此图片加载完成后的回调是调整头部视图高度的关键时刻。使用SDWebImage库或其他图片加载库,可以在图片加载完成后自动调整视图大小。 此外,为了实现类似小红书的...

    android图片瀑布流实现源代码

    本文将详细介绍如何在Android中实现瀑布流,包括异步加载、自定义行显示、图片大小定制以及上拉下拉刷新等功能。 1. **异步加载** 异步加载是处理大量图片时必不可少的技术,避免因图片加载阻塞主线程导致UI卡顿。...

    python使用PIL缩放网络图片并保存的方法

    首先,当我们要从网络上获取图片时,通常会用到Python的网络请求库。Python提供了多个处理网络请求的库,如urllib(Python标准库的一部分),requests等。urllib库在Python 3中分为几个独立的模块,如urllib.request...

    解决Android头像上传时裁剪图片过大问题

    当用户从相册选择一张高分辨率的图片,该图片的尺寸可能远超乎我们的想象,比如4000x3000像素,这样的图片不仅占用内存大,而且在网络传输时耗时较长。为了解决这个问题,我们需要对图片进行适当的裁剪和压缩。 一...

    Bitmap全面解析

    这能够进一步优化性能,避免在主线程上做耗时的网络请求或图片解码操作,防止应用界面冻结。 在处理 Bitmap 的过程中,还有一些重要的点需要注意: - 管理内存:对于加载到内存中的图片,需要适时地进行内存管理,...

    Android应用源码之-Universal-Image-Loader--IT计算机-毕业设计.zip

    4. **图片的缩放和裁剪**:Universal-Image-Loader支持对加载的图片进行缩放和裁剪,以适应不同的视图大小,如ImageView的宽高比,防止因图片过大导致内存溢出。 5. **图片动画**:该库还允许添加图片加载和显示的...

    jQuery手机字体和图片自适应

    1. 设置图片宽高比:通过CSS的max-width: 100%和height: auto属性,图片会根据其父容器的宽度自适应,保持原有比例。 2. 图片懒加载:使用jQuery的lazyload插件,只在图片进入视口时加载,减少页面初次加载时间。 3....

    Asp.net图片生成缩略图

    使用`System.Drawing.Image.FromFile()`方法读取本地文件系统的图片,或者使用`System.Drawing.Image.FromStream()`方法从网络流或内存中加载图片。确保正确处理异常,例如文件不存在或格式不支持的情况。 2. **...

    瀑布流加载图片效果

    合理利用缓存机制,减少网络请求;及时回收不再使用的资源,防止内存泄漏。 7. **布局稳定性**:由于瀑布流布局的复杂性,可能在屏幕旋转、item添加或删除等操作时出现布局不稳定的情况。需要确保在这些情况下布局...

    android防止oom的图片加载例子

    - **内存缓存与磁盘缓存**:使用如`LruCache`或`DiskLruCache`实现图片缓存,减少网络请求和内存压力。 - **使用图片加载库**:如Glide、Picasso等,它们内置了多种优化策略,自动处理内存和磁盘缓存。 3. **...

Global site tag (gtag.js) - Google Analytics