123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- //
- // NSURL+ImageSize.m
- // MEISHI
- //
- // Created by CY on 2021/2/26.
- // Copyright © 2021 leo. All rights reserved.
- //
- #import "NSURL+ImageSize.h"
- static NSString *const XOSSPROCESS = @"x-oss-process";
- @implementation NSURL (ImageSize)
- - (NSURL *)urlWithImageScale:(NSInteger)scale{
- NSDictionary *params = [self getParamsWithUrlString:self.absoluteString];
- if (params == nil) {
- NSString *appendStr = [NSString stringWithFormat:@"?%@=image/quality,q_%ld",XOSSPROCESS,scale];
- NSString *str = [NSString stringWithFormat:@"%@%@",self.absoluteString,appendStr];
- return [NSURL URLWithString:str];
- }else{
- if ([params.allKeys containsObject:XOSSPROCESS]) {
- return self;
- }else{
- NSString *appendStr = [NSString stringWithFormat:@"&%@=image/quality,q_%ld",XOSSPROCESS,scale];
- NSString *str = [NSString stringWithFormat:@"%@%@",self.absoluteString,appendStr];
- return [NSURL URLWithString:str];
- }
- }
- }
- - (NSURL *)urlWithImageResize:(NSInteger)scale{
- // ?x-oss-process=image/crop,x_100,y_50
- NSString *const process= @"x-oss-process";
- NSDictionary *params = [self getParamsWithUrlString:self.absoluteString];
- if (params == nil) {
- NSString *appendStr = [NSString stringWithFormat:@"?%@=image/resize,w_%zd",process,scale];
- NSString *str = [NSString stringWithFormat:@"%@%@",self.absoluteString,appendStr];
- return [NSURL URLWithString:str];
- }else{
- if ([params.allKeys containsObject:process]) {
- return self;
- }else{
- NSString *appendStr = [NSString stringWithFormat:@"?%@=image/resize,w_%zd",process,scale];
- NSString *str = [NSString stringWithFormat:@"%@%@",self.absoluteString,appendStr];
- return [NSURL URLWithString:str];
- }
- }
- }
- - (NSDictionary *)getParamsWithUrlString:(NSString*)urlString {
- if(urlString.length==0) {
- return nil;
- }
- //先截取问号
- NSArray* allElements = [urlString componentsSeparatedByString:@"?"];
- NSMutableDictionary* params = [NSMutableDictionary dictionary];//待set的参数字典
-
- if(allElements.count == 2) {
- //有参数或者?后面为空
- NSString* paramsString = allElements[1];
- //获取参数对
- NSArray*paramsArray = [paramsString componentsSeparatedByString:@"&"];
- if(paramsArray.count>=2) {
- for(NSInteger i =0; i < paramsArray.count; i++) {
- NSString* singleParamString = paramsArray[i];
- NSArray* singleParamSet = [singleParamString componentsSeparatedByString:@"="];
- if(singleParamSet.count==2) {
- NSString* key = singleParamSet[0];
- NSString* value = singleParamSet[1];
- if(key.length>0|| value.length>0) {
- [params setObject: value.length>0? value:@"" forKey:key.length>0?key:@""];
- }
- }
- }
- }else if(paramsArray.count == 1) {//无 &。url只有?后一个参数
- NSString* singleParamString = paramsArray[0];
-
- NSArray* singleParamSet = [singleParamString componentsSeparatedByString:@"="];
- if(singleParamSet.count==2) {
- NSString* key = singleParamSet[0];
- NSString* value = singleParamSet[1];
- if(key.length>0 || value.length>0) {
- [params setObject:value.length>0?value:@""forKey:key.length>0?key:@""];
- }
- }else{
- //问号后面啥也没有 xxxx? 无需处理
- }
- }
- //整合url及参数
- return params;
- }else if(allElements.count>2) {
- return nil;
- }else{
- return nil;
- }
- }
- @end
|