根据图片的链接获取图片的宽高

//根据图片的链接获取图片的宽高
- (CGSize)downloadImageSizeWithURL:(id)imageURL
{
    NSURL *URL = nil;
    if([imageURL isKindOfClass:[NSURL class]]){
        URL = imageURL;
    }
    if([imageURL isKindOfClass:[NSString class]]){
        URL = [NSURL URLWithString:imageURL];
    }
    if(URL == nil)
        return CGSizeZero;

#ifdef dispatch_main_sync_safe
    if([[SDImageCache sharedImageCache] diskImageExistsWithKey:absoluteString]){
        UIImage* image = [[SDImageCache sharedImageCache] imageFromMemoryCacheForKey:absoluteString];
        if(!image){
            NSData* data = [[SDImageCache sharedImageCache] performSelector:@selector(diskImageDataBySearchingAllPathsForKey:) withObject:URL.absoluteString];
            image = [UIImage imageWithData:data];
        }
        if(image){
            return image.size;
        }
    }
#endif

    CGSize size = CGSizeZero;
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:URL];
    NSString *pathExtendsion = [URL.pathExtension lowercaseString];

    if([pathExtendsion isEqualToString:@"png"]){
        size = [self downloadPNGImageSizeWithRequest:request];
    }else if([pathExtendsion isEqual:@"gif"]){
        size = [self downloadGIFImageSizeWithRequest:request];
    }else{
        size = [self downloadJPGImageSizeWithRequest:request];
    }

    if(CGSizeEqualToSize(CGSizeZero, size)){
        NSData* data = [NSURLConnection sendSynchronousRequest:[NSURLRequest requestWithURL:URL] returningResponse:nil error:nil];
        UIImage* image = [UIImage imageWithData:data];
        if(image){
#ifdef dispatch_main_sync_safe
            [[SDImageCache sharedImageCache] storeImage:image recalculateFromImage:YES imageData:data forKey:URL.absoluteString toDisk:YES];
#endif
            size = image.size;
        }
    }
    return size;
}

原帖地址:http://blog.csdn.net/li6185377/article/details/26225799
时间: 2024-08-08 05:13:58

根据图片的链接获取图片的宽高的相关文章

动态获取手机屏幕宽高及动态设置控件宽高

1.获取手机屏幕宽高: DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); int screenWidth = dm.widthPixels; int screenHeight = dm.heightPixels; 22.根据屏幕宽度为控件设置动态设置宽高: imageView.setImageResource(R.drawable.newscar); L

前端 JS 获取 Image 图像 宽高 尺寸

前端 JS 获取 Image 图像 宽高 尺寸 简介 项目中用到获取图片的原始尺寸,然后适配宽高:网上的大部分前端解决方案,都是new Image()后,在onload事件中获取image的尺寸. 在图片数量较多的时候,这样的获取效率实在是低下.所有就有了这篇文章.通过直接读取解析文件的字节码来获取图片的尺寸. IMAGE_HEAD_SIGS var IMAGE_HEAD_SIGS = { GIF: [0x47, 0x49, 0x46], //'G' 'I' 'F' ascii PNG: [0x

在渲染前获取 View 的宽高

在渲染前获取 View 的宽高 这是一个比较有意义的问题,或者说有难度的问题,问题的背景为:有时候我们需要在view渲染前去获取其宽高,典型的情形是,我们想在onCreate.onStart.onResume中去获取view的宽高.如果大家尝试过,会发现,这个时候view还没有measure好,宽高都为0,那到底该怎么做才能正确获取其宽高呢,下面给出三种方法(还有其他方法, 比如监听器回调等): Activity/View#onWindowFocusChanged :这个方法表明,view已经初

js获取隐藏元素宽高的方法

网上有一些js获取隐藏元素宽高的方法,但是可能会存在某些情况获取不了. 例如: <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> <title>test</title> </head> <bo

Js怎么获取DOM及获取浏览器的宽高?

在JavaScript中,经常会需要获取document文档元素,是HTML文档对象模型的缩写,HTML DOM 定义了用于 HTML 的一系列标准的对象,以及访问和处理 HTML 文档的标准方法. 通过 DOM,可以访问所有的 HTML 元素,连同它们所包含的文本和属性.可以对其中的内容进行修改和删除,同时也可以创建新的元素.HTML DOM 独立于平台和编程语言.它可被任何编程语言诸如 Java.JavaScript 和 VBScript 使用. DOM独立于具体的编程语言,通常通过Java

android获取控件宽高和屏幕宽高

一.获取屏幕宽高 1.android界面简单介绍 要获取屏幕宽高,我们可以先从android的界面构成了解 android的界面主要由三部分构成:1.状态栏 2.标题栏 3.内容区域 \ (1)状态栏 状态栏主要用来显示一些系统图标,应用的通知图标和系统时间. (2)标题栏 android中标题栏主要用来显示当前位置,3.0过后添加了ActionBar,拥有了导航和OptionMenu的功能,5.0又新添加了ToolBar控件,和ActionBar类似,但自定义的空间更充足 (3)内容区域 an

根据图片url地址获取图片的宽高

1 /** 2 * 根据img获取图片的宽高 3 * @param img 图片地址 4 * @return 图片的对象,对象中图片的真实宽高 5 */ 6 public BufferedImage getBufferedImage(String imgurl) { 7 URL url = null; 8 InputStream is = null; 9 BufferedImage img = null; 10 try { 11 url = new URL(imgurl); 12 HttpURL

Android获取本地相册图片、拍照获取图片

需求:从本地相册找图片,或通过调用系统相机拍照得到图片. 容易出错的地方: 1,当我们指定了照片的uri路径,我们就不能通过data.getData();来获取uri,而应该直接拿到uri(用全局变量或者其他方式)然后设置给imageView imageView.setImageURI(uri); 2,我发现手机前置摄像头拍出来的照片只有几百KB,直接用imageView.setImageURI(uri);没有很大问题,但是后置摄像头拍出来的照片比较大,这个时候使用imageView.setIm

Android从零单排之获取ImageView的宽高为0?

问题描述 说起来我也够菜的!⊙﹏⊙b汗. 今天搞了一个关于图片的demo,想动态的改变一张图片的大小和margin值.但是在activity中获取imageview的宽度和高度的时候,总是0.哎,我tm就是搞不懂了,怎么能是0呢? <span style="white-space:pre"> </span>imageView1 = (ImageView) findViewById(R.id.id_img1); int width = imageView1.get