日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS根据图片url获取尺寸

發布時間:2024/1/17 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS根据图片url获取尺寸 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

可以在UIImage的分類中加入下面的代碼,并且引入系統的ImageIO.framework

/**根據圖片的url獲取尺寸@param URL url@return CGSize*/ + (CGSize)getImageSizeWithURL:(id)URL;/*** 根據圖片url獲取圖片尺寸*/ + (CGSize)getImageSizeWithURL:(id)URL{NSURL * url = nil;if ([URL isKindOfClass:[NSURL class]]) {url = URL;}if ([URL isKindOfClass:[NSString class]]) {url = [NSURL URLWithString:URL];}if (!URL) {return CGSizeZero;}CGImageSourceRef imageSourceRef = CGImageSourceCreateWithURL((CFURLRef)url, NULL);CGFloat width = 0, height = 0;if (imageSourceRef) {CFDictionaryRef imageProperties = CGImageSourceCopyPropertiesAtIndex(imageSourceRef, 0, NULL);if (imageProperties != NULL) {CFNumberRef widthNumberRef = CFDictionaryGetValue(imageProperties, kCGImagePropertyPixelWidth);// if (widthNumberRef != NULL) { // CFNumberGetValue(widthNumberRef, kCFNumberFloat64Type, &width); // } // CFNumberRef heightNumberRef = CFDictionaryGetValue(imageProperties, kCGImagePropertyPixelHeight); // if (heightNumberRef != NULL) { // CFNumberGetValue(heightNumberRef, kCFNumberFloat64Type, &height); // }//判斷設備是否為64位 #if defined(__LP64__) && __LP64__if (widthNumberRef != NULL) {CFNumberGetValue(widthNumberRef, kCFNumberFloat64Type, &width);}CFNumberRef heightNumberRef = CFDictionaryGetValue(imageProperties, kCGImagePropertyPixelHeight);if (heightNumberRef != NULL) {CFNumberGetValue(heightNumberRef, kCFNumberFloat64Type, &height);} #elseif (widthNumberRef != NULL) {CFNumberGetValue(widthNumberRef, kCFNumberFloat32Type, &width);}CFNumberRef heightNumberRef = CFDictionaryGetValue(imageProperties, kCGImagePropertyPixelHeight);if (heightNumberRef != NULL) {CFNumberGetValue(heightNumberRef, kCFNumberFloat32Type, &height);} #endifCFRelease(imageProperties);}CFRelease(imageSourceRef);}return CGSizeMake(width, height); }

?

實踐證明,網上的另外一種方法是不可行存在問題的,貼上所示的圖片url:http://xs3.op.xywy.com/club.xywy.com/doc/20181017/0fd2a51f9435a4.jpg

// 根據圖片url獲取圖片尺寸 -(CGSize)getImageSizeWithURL:(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; // url不正確返回CGSizeZero NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:URL];NSString* pathExtendsion = [URL.pathExtension lowercaseString];CGSize size = CGSizeZero;if([pathExtendsion isEqualToString:@"png"]){size = [self getPNGImageSizeWithRequest:request];}else if([pathExtendsion isEqual:@"gif"]){size = [self getGIFImageSizeWithRequest:request];}else{size = [self getJPGImageSizeWithRequest:request];}if(CGSizeEqualToSize(CGSizeZero, size)) // 如果獲取文件頭信息失敗,發送異步請求請求原圖 {NSData* data = [NSURLConnection sendSynchronousRequest:[NSURLRequest requestWithURL:URL] returningResponse:nil error:nil];UIImage* image = [UIImage imageWithData:data];if(image){size = image.size;}}return size; } // 獲取PNG圖片的大小 -(CGSize)getPNGImageSizeWithRequest:(NSMutableURLRequest*)request {[request setValue:@"bytes=16-23" forHTTPHeaderField:@"Range"];NSData* data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];if(data.length == 8){int w1 = 0, w2 = 0, w3 = 0, w4 = 0;[data getBytes:&w1 range:NSMakeRange(0, 1)];[data getBytes:&w2 range:NSMakeRange(1, 1)];[data getBytes:&w3 range:NSMakeRange(2, 1)];[data getBytes:&w4 range:NSMakeRange(3, 1)];int w = (w1 << 24) + (w2 << 16) + (w3 << 8) + w4;int h1 = 0, h2 = 0, h3 = 0, h4 = 0;[data getBytes:&h1 range:NSMakeRange(4, 1)];[data getBytes:&h2 range:NSMakeRange(5, 1)];[data getBytes:&h3 range:NSMakeRange(6, 1)];[data getBytes:&h4 range:NSMakeRange(7, 1)];int h = (h1 << 24) + (h2 << 16) + (h3 << 8) + h4;return CGSizeMake(w, h);}return CGSizeZero; } // 獲取gif圖片的大小 -(CGSize)getGIFImageSizeWithRequest:(NSMutableURLRequest*)request {[request setValue:@"bytes=6-9" forHTTPHeaderField:@"Range"];NSData* data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];if(data.length == 4){short w1 = 0, w2 = 0;[data getBytes:&w1 range:NSMakeRange(0, 1)];[data getBytes:&w2 range:NSMakeRange(1, 1)];short w = w1 + (w2 << 8);short h1 = 0, h2 = 0;[data getBytes:&h1 range:NSMakeRange(2, 1)];[data getBytes:&h2 range:NSMakeRange(3, 1)];short h = h1 + (h2 << 8);return CGSizeMake(w, h);}return CGSizeZero; } // 獲取jpg圖片的大小 -(CGSize)getJPGImageSizeWithRequest:(NSMutableURLRequest*)request {[request setValue:@"bytes=0-209" forHTTPHeaderField:@"Range"];NSData* data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];if ([data length] <= 0x58) {return CGSizeZero;}if ([data length] < 210) {// 肯定只有一個DQT字段short w1 = 0, w2 = 0;[data getBytes:&w1 range:NSMakeRange(0x60, 0x1)];[data getBytes:&w2 range:NSMakeRange(0x61, 0x1)];short w = (w1 << 8) + w2;short h1 = 0, h2 = 0;[data getBytes:&h1 range:NSMakeRange(0x5e, 0x1)];[data getBytes:&h2 range:NSMakeRange(0x5f, 0x1)];short h = (h1 << 8) + h2;return CGSizeMake(w, h);} else {short word = 0x0;[data getBytes:&word range:NSMakeRange(0x15, 0x1)];if (word == 0xdb) {[data getBytes:&word range:NSMakeRange(0x5a, 0x1)];if (word == 0xdb) {// 兩個DQT字段short w1 = 0, w2 = 0;[data getBytes:&w1 range:NSMakeRange(0xa5, 0x1)];[data getBytes:&w2 range:NSMakeRange(0xa6, 0x1)];short w = (w1 << 8) + w2;short h1 = 0, h2 = 0;[data getBytes:&h1 range:NSMakeRange(0xa3, 0x1)];[data getBytes:&h2 range:NSMakeRange(0xa4, 0x1)];short h = (h1 << 8) + h2;return CGSizeMake(w, h);} else {// 一個DQT字段short w1 = 0, w2 = 0;[data getBytes:&w1 range:NSMakeRange(0x60, 0x1)];[data getBytes:&w2 range:NSMakeRange(0x61, 0x1)];short w = (w1 << 8) + w2;short h1 = 0, h2 = 0;[data getBytes:&h1 range:NSMakeRange(0x5e, 0x1)];[data getBytes:&h2 range:NSMakeRange(0x5f, 0x1)];short h = (h1 << 8) + h2;return CGSizeMake(w, h);}} else {return CGSizeZero;}} }

源自:https://www.jianshu.com/p/9984c37f3f54?

轉載于:https://www.cnblogs.com/jingxin1992/p/9805822.html

總結

以上是生活随笔為你收集整理的iOS根据图片url获取尺寸的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美日韩一区二区中文字幕 | 同心兄弟| 在线中文字幕播放 | 韩国av免费观看 | 九九九九九热 | 男女激情在线观看 | 夫の上司に犯波多野结衣853 | 久久国产人妻一区二区免色戒电影 | 男女互操在线观看 | 国产小视频自拍 | 美女扒开腿让男生桶 | 美女视频一区二区三区 | 亚洲精品成人a | 久久cao | 2021av | 久久一精品 | 久久这里只有精品久久 | 久久久久久九九九 | jizz日本大全 | 在线免费黄 | 五月婷婷狠狠干 | 97在线免费视频 | 香蕉视频一区二区 | 美女扒开尿口给男人捅 | 台湾av在线播放 | 国产美女精品久久 | 色呦呦国产| 台湾一级视频 | 国产成人在线观看免费网站 | 亚洲区久久 | 午夜国产小视频 | 色婷婷精品 | 欧美69精品久久久久久不卡 | 日韩大胆视频 | 欧美视频一| 99热18| 草草视频在线免费观看 | 麻豆av一区二区三区在线观看 | 黄频在线 | 久久伊人一区二区 | a∨色狠狠一区二区三区 | 那里可以看毛片 | 椎名由奈av一区二区三区 | 深夜福利国产 | 黄色同人网站 | 久久久久久久成人 | 国产视频一区三区 | 日韩黄色精品视频 | 超碰碰碰碰 | 91官网在线观看 | 亚洲人午夜射精精品日韩 | 亚洲女同一区二区 | 国产美女又黄又爽又色视频免费 | 亚洲午夜毛片 | 99精品国产成人一区二区 | 九热在线| 国产成人精品影视 | 欧美性综合| 国产福利精品一区 | 黄色a一级 | 国产人澡人澡澡澡人碰视频 | 国产xx在线观看 | 精品色综合 | 日韩在线激情 | a级片在线播放 | 亚洲色吧| 久久久久久久久久久久久久久久久久 | 国产精欧美一区二区三区白种人 | 亚洲无吗一区二区三区 | 永久毛片 | 亚洲AV无码AV吞精久久中文版 | 中文字幕人妻一区二区三区 | 国产午夜精品一区二区理论影院 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 国产精品普通话 | 天天看天天摸天天操 | 午夜九九| 911亚洲精品 | 欧美xxx视频 | 欧美女人天堂 | 成人av久久 | 亚洲欧洲色 | 最近中文字幕在线免费观看 | 一级黄色片在线免费观看 | 日本欧美另类 | 国产精品3 | 午夜少妇av| 久操视频免费在线观看 | 色播五月激情五月 | 日韩爽片 | 暧暧视频在线观看 | 香蕉尹人网 | 国产精品久久久久久久一区二区 | 综合成人 | 奇米影视一区二区三区 | 永久视频在线观看 | 亚洲免费黄色网址 | 久久综合爱| 日本少妇aaa |