123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744 |
- //
- // iTools.m
- // VclustersGemini
- //
- // Created by 余衡武 on 2020/4/1.
- // Copyright © 2020 APPLE. All rights reserved.
- //
- #import "iTools.h"
- #import "CommonCrypto/CommonDigest.h"
- #import <CommonCrypto/CommonCrypto.h>
- @implementation iTools
- #pragma mark 字典、数组转JSONString
- /** 字典转JSONString */
- + (NSString *)getJSONStringFromDictionary:(NSDictionary *)dict {
-
- NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:nil];
-
- NSString *jsonStr = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
-
- return jsonStr;
- }
- /** 数组转JSONString */
- + (NSString *)getJSONStringFromArray:(NSArray *)array {
-
- NSData *jsonData = [NSJSONSerialization dataWithJSONObject:array options:NSJSONWritingPrettyPrinted error:nil];
-
- NSString *jsonStr = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
-
- return jsonStr;
- }
- #pragma mark 时间戳
- /** 获取当前时间戳-以秒为单位-return NSInteger */
- + (NSInteger)getNowTimeStamp {
- return [[NSDate date] timeIntervalSince1970];
- }
- /** 获取当前时间戳-以秒为单位-return yyyy/MM/dd HH:mm */
- + (NSString *)getNowTimeString {
- NSDate *nowDate = [NSDate date];
- NSDateFormatter *format = [[NSDateFormatter alloc] init];
- [format setDateFormat:@"yyyy/MM/dd HH:mm"];
- NSString *dateStr = [format stringFromDate:nowDate];
- return dateStr;
- }
- /** 获取当前时间戳-以秒为单位-return yyyyy年MM月dd日 HH:mm:ss */
- + (NSString *)getNowTimeString1 {
- NSDate *nowDate = [NSDate date];
- NSDateFormatter *format = [[NSDateFormatter alloc] init];
- [format setDateFormat:@"yyyy年MM月dd日 HH:mm:ss"];
- NSString *dateStr = [format stringFromDate:nowDate];
- return dateStr;
- }
- /** 获取当前时间戳-以秒为单位-return yyyyy-MM-dd HH:mm:ss */
- + (NSString *)getNowTimeString2 {
- NSDate *nowDate = [NSDate date];
- NSDateFormatter *format = [[NSDateFormatter alloc] init];
- [format setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
- NSString *dateStr = [format stringFromDate:nowDate];
- return dateStr;
- }
- /** 获取当前时间戳-以毫秒为单位-return NSInteger */
- + (NSInteger)getNowTimeStampSS {
- NSDate *dateValue = [NSDate date];
- NSTimeInterval second = [dateValue timeIntervalSince1970];
- long long dTime = [[NSNumber numberWithDouble:second*1000] longLongValue];
- return dTime;
- }
- /** 获取当前时间戳-以毫秒为单位--return YYYYMMddhhmmssSSS */
- + (NSString *)getNowTimeStampString {
- NSString* date;
- NSDateFormatter * formatter = [[NSDateFormatter alloc ] init];
- [formatter setDateFormat:@"YYYYMMddhhmmssSSS"];
- date = [formatter stringFromDate:[NSDate date]];
- NSString *timeNow = [NSString stringWithFormat:@"%@", date];
- return timeNow;
- }
- /** 获取当前时间戳-以天为单位--return yyyy-MM-dd */
- + (NSString *)getNowDateString {
- NSDate *nowDate = [NSDate date];
- NSDateFormatter *format = [[NSDateFormatter alloc] init];
- [format setDateFormat:@"yyyy-MM-dd"];
- NSString *dateStr = [format stringFromDate:nowDate];
- return dateStr;
- }
- /** 获取现在到某个时间点的时间戳*/
- + (NSInteger)getNowTimeStampToInterval:(NSTimeInterval)second {
- long long dTime = [[NSNumber numberWithDouble:second*1000] longLongValue];
- return dTime;
- }
- /** 把字符串转时间戳Date YYYYMMddhhmmssSSS*/
- + (NSDate *)getTimeStringToDate:(NSString *)timeStr{
- NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
- //需要设置为和字符串相同的格式
- [dateFormatter setDateFormat:@"YYYYMMddhhmmssSSS"];
- NSDate *localDate = [dateFormatter dateFromString:timeStr];
- return localDate;
- }
- /**时间戳转字符串-yyyy/MM/dd HH:mm*/
- + (NSString *)getTimeStringFromTimeInterval:(NSInteger)timeInterval {
- NSDate *date = [[NSDate alloc]initWithTimeIntervalSince1970:timeInterval];
- NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
- [formatter setDateFormat:@"yyyy/MM/dd HH:mm"];
- NSString *timeString = [formatter stringFromDate:date];
- return timeString;
- }
- /** 秒转播放时间HH:mm:ss */
- + (NSString *)getPlayTimeStringFromTimeInterval:(NSTimeInterval)timeInterval {
- NSInteger seconds = timeInterval;
- //format of hour
- NSString *str_hour = [NSString stringWithFormat:@"%02ld",seconds/3600];
- //format of minut
- NSString *str_minute = [NSString stringWithFormat:@"%02ld",(seconds%3600)/60];
- //format of second
- NSString *str_second = [NSString stringWithFormat:@"%02ld",seconds%60];
- //format of time
- NSString *format_time = [NSString stringWithFormat:@"%@:%@:%@",str_hour,str_minute,str_second];
- return format_time;
- }
- #pragma mark 通讯录备份
- //ypp add 通讯录文件名格式YmdHis+随机数字(1000~9999) 2020 07 07 15 08 25 1000
- + (NSString *)getContactsNameStr {
- NSString* date;
- NSDateFormatter * formatter = [[NSDateFormatter alloc ] init];
- [formatter setDateFormat:@"YYYYMMddhhmmss"];
- date = [formatter stringFromDate:[NSDate date]];
- int randomNumber = (int) arc4random_uniform(9999) + 1000;
- NSString *contactsNameStr = [NSString stringWithFormat:@"%@%d",date,randomNumber];
- return contactsNameStr;
- }
- //ypp add 推流业务随机生成6位数的字符串
- + (NSString *)getTaskUidStr {
- int randomNumber = (int) arc4random_uniform(999999) + 100000;
- NSString *strRandom = [NSString stringWithFormat:@"%d",randomNumber];
- return strRandom;
- }
- #pragma mark 绘制图片UIImage
- /** 根据颜色绘制图片 */
- + (UIImage*)createImageWithColor:(UIColor *)color
- {
- CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
- UIGraphicsBeginImageContext(rect.size);
- CGContextRef context = UIGraphicsGetCurrentContext();
- CGContextSetFillColorWithColor(context, [color CGColor]);
- CGContextFillRect(context, rect);
- UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
- UIGraphicsEndImageContext();
- return image;
- }
- /** 根据颜色和view 绘制指定大小的图片 */
- + (UIImage *)imageFromColor:(UIColor *)color view:(UIView *)view {
- CGRect rect = CGRectMake(0, 0, view.frame.size.width, view.frame.size.height);
- UIGraphicsBeginImageContext(rect.size);
- CGContextRef context = UIGraphicsGetCurrentContext();
- CGContextSetFillColorWithColor(context, [color CGColor]);
- CGContextFillRect(context, rect);
- UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
- UIGraphicsEndImageContext();
- return img;
- }
- /** 根据颜色和rect 绘制指定大小的图片 */
- + (UIImage *)getImageFromColor:(UIColor *)color rect:(CGRect)rect {
- UIGraphicsBeginImageContext(rect.size);
- CGContextRef context = UIGraphicsGetCurrentContext();
- CGContextSetFillColorWithColor(context, [color CGColor]);
- CGContextFillRect(context, rect);
- UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
- UIGraphicsEndImageContext();
- return img;
- }
- /** 根据颜色和size 绘制指定大小的图片 */
- + (UIImage *)createImageWithColor:(UIColor *)color withSize:(CGSize)size {
- CGRect rect = CGRectMake(0.0f, 0.0f, size.width, size.height);
- UIGraphicsBeginImageContextWithOptions(rect.size,NO,[UIScreen mainScreen].scale);
- CGContextRef context = UIGraphicsGetCurrentContext();
- CGContextSetFillColorWithColor(context, [color CGColor]);
- CGContextFillRect(context, rect);
- UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();
- UIGraphicsEndImageContext();
-
- return theImage;
- }
- /**根据uiview得到图像UIImage*/
- + (UIImage *)getImageFromView:(UIView *)fromView useScreenScale:(BOOL)use useNewMethod:(BOOL)useNewMethod
- {
- UIImage *viewImage = nil;
-
- if (([[[UIDevice currentDevice] systemVersion] doubleValue] > 7) && useNewMethod) {
- UIGraphicsBeginImageContextWithOptions(fromView.bounds.size, NO, [[UIScreen mainScreen] scale]);
- [fromView drawViewHierarchyInRect:fromView.bounds afterScreenUpdates:NO];
- viewImage = UIGraphicsGetImageFromCurrentImageContext();
- UIGraphicsEndImageContext();
- } else {
- NSInteger scale = use ? [[UIScreen mainScreen] scale] : 1;
- UIGraphicsBeginImageContextWithOptions(CGSizeMake(fromView.bounds.size.width, fromView.bounds.size.height), NO, scale);
- [fromView.layer renderInContext:UIGraphicsGetCurrentContext()];
- viewImage = UIGraphicsGetImageFromCurrentImageContext();
- UIGraphicsEndImageContext();
- }
- return viewImage;
- }
- // 彩色图变黑白图
- + (UIImage*)getGrayImageFromImage:(UIImage*)sourceImage {
- int width = sourceImage.size.width-2;
- int height = sourceImage.size.height;
- CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray();
- CGContextRef context = CGBitmapContextCreate (nil, width, height,8,0, colorSpace,kCGImageAlphaNone);
- CGColorSpaceRelease(colorSpace);
- if (context ==NULL) {
- return nil;
- }
- CGContextDrawImage(context,CGRectMake(0,0, width, height), sourceImage.CGImage);
- UIImage *grayImage = [UIImage imageWithCGImage:CGBitmapContextCreateImage(context)];
- CGContextRelease(context);
- return grayImage;
- }
- #pragma mark 绘制圆角
- /**圆角切割*/
- + (CAShapeLayer *)getCornerRoundWithSelfView:(UIView *)originalView byRoundingCorners:(UIRectCorner)corners cornerRect:(CGRect)rect {
- UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:rect byRoundingCorners:corners cornerRadii:CGSizeMake(10, 10)];
- CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
- maskLayer.frame = originalView.bounds;
- maskLayer.path = maskPath.CGPath;
- return maskLayer;
- }
- + (CAShapeLayer *)getCornerRoundWithSelfView:(UIView *)originalView byRoundingCorners:(UIRectCorner)corners cornerRect:(CGRect)rect radius:(CGFloat)radius {
- UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:rect byRoundingCorners:corners cornerRadii:CGSizeMake(radius, radius)];
- CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
- maskLayer.frame = originalView.bounds;
- maskLayer.path = maskPath.CGPath;
- return maskLayer;
- }
- #pragma mark 小数取整 不四舍五入.
- /** 小数取整 不四舍五入 */
- + (NSString *)notRounding:(float)price afterPoint:(int)position {
- NSDecimalNumberHandler *roundingBehavior = [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundDown scale:position raiseOnExactness:NO raiseOnOverflow:NO raiseOnUnderflow:NO raiseOnDivideByZero:NO];
- NSDecimalNumber *ouncesDecimal = [[NSDecimalNumber alloc] initWithFloat:price];
- NSDecimalNumber *roundedOunces = [ouncesDecimal decimalNumberByRoundingAccordingToBehavior:roundingBehavior];
- return [NSString stringWithFormat:@"%@%%",roundedOunces];
- }
- /** 小数取整 不四舍五入 */
- + (CGFloat)notRoundingFloat:(float)price afterPoint:(int)position {
- NSDecimalNumberHandler *roundingBehavior = [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundDown scale:position raiseOnExactness:NO raiseOnOverflow:NO raiseOnUnderflow:NO raiseOnDivideByZero:NO];
- NSDecimalNumber *ouncesDecimal = [[NSDecimalNumber alloc] initWithFloat:price];
- NSDecimalNumber *roundedOunces = [ouncesDecimal decimalNumberByRoundingAccordingToBehavior:roundingBehavior];
- return [roundedOunces floatValue];
- }
- /** 小数点格式化*/
- + (NSString *)formatFloat:(float)f
- {
- if (fmodf(f, 1)==0) {//如果有一位小数点
- return [NSString stringWithFormat:@"%.0f",f];
- } else if (fmodf(f*10, 1)==0) {//如果有两位小数点
- return [NSString stringWithFormat:@"%.1f",f];
- } else {
- return [NSString stringWithFormat:@"%.2f",f];
- }
- }
- #pragma mark 字符串处理
- /** 去除字符串中所有的空格和换行符(包括中间和首尾) */
- + (NSString *)removeSpaceAndNewline:(NSString *)str
- {
- NSString *temp = [str stringByReplacingOccurrencesOfString:@" " withString:@""];
- temp = [temp stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; //去除掉首尾的空白字符和换行字符
- temp = [temp stringByReplacingOccurrencesOfString:@"\r" withString:@""];
- temp = [temp stringByReplacingOccurrencesOfString:@"\n" withString:@""];
- return temp;
- }
- /** 获取拼音首字母(传入汉字字符串, 返回大写拼音首字母)*/
- + (NSString *)FirstCharactor:(NSString *)pString
- {
- //转成了可变字符串
- NSMutableString *pStr = [NSMutableString stringWithString:pString];
- //先转换为带声调的拼音
- CFStringTransform((CFMutableStringRef)pStr,NULL, kCFStringTransformMandarinLatin,NO);
- //再转换为不带声调的拼音
- CFStringTransform((CFMutableStringRef)pStr,NULL, kCFStringTransformStripDiacritics,NO);
- //转化为大写拼音
- NSString *pPinYin = [pStr capitalizedString];
- //获取并返回首字母
- return [pPinYin substringToIndex:1];
- }
- #pragma mark 系统语言
- /** 获取当前系统的语言 */
- + (NSString *)getCurrentLocalizableLanguage {
- NSArray *languages = [NSLocale preferredLanguages];
- NSString *currentLanguage = [languages objectAtIndex:0];
- return currentLanguage;
- }
- /** 当前语言是否为中文 */
- + (BOOL)isChineseLanguage {
- NSString *currentLanguage = [self getCurrentLocalizableLanguage];
- if ([currentLanguage rangeOfString:@"^zh-" options:NSRegularExpressionSearch range:NSMakeRange(0, currentLanguage.length)].location != NSNotFound) {
- return YES;
- }
-
- return NO;
- }
- #pragma mark push到指定vc
- /**push到vc 控制器
- * 1、NavigationController之前有push过就back
- * 2、NavigationController之前没有push过就push
- */
- + (void)pushVCWithBackOrPushFromNvc:(UINavigationController *)nvc toVc:(UIViewController *)vc {
-
- BOOL isBack = NO; // 是返回 还是push
- for (UIViewController *controller in nvc.viewControllers) {
- if ([controller isKindOfClass:[vc class]]) {
- [nvc popToViewController:controller animated:YES];
- isBack = YES;
- }
- }
-
- if (!isBack) {
- [nvc pushViewController:vc animated:YES];
- }
- }
- #pragma mark 文件大小格式化
- /**将文件大小B 自动转成对应的B KB MB GB**/
- + (NSString *)getFileSizeStringFormedValue:(NSInteger)value
- {
- double convertedValue = value*1.0;
- int multiplyFactor = 0;
- NSArray *tokens = [NSArray arrayWithObjects:@"B",@"KB",@"MB",@"GB",@"TB",nil];
- while (convertedValue > 1024 && multiplyFactor < tokens.count) {
- convertedValue /= 1024;
- multiplyFactor++;
- }
- NSString *text = [NSString stringWithFormat:@"%4.2f%@",convertedValue, [tokens objectAtIndex:multiplyFactor]];
- if ([text isEqualToString:@"0.00B"]) {
- text = @"0B";
- }
-
- return text;
- }
- #pragma mark 获取文件MD5值
- /**获取文件MD5值*/
- #define FileHashDefaultChunkSizeForReadingData 1024*8
- + (NSString*)getFileMD5WithPath:(NSString*)path {
-
- NSFileManager *fileManager = [NSFileManager defaultManager];
- if([fileManager fileExistsAtPath:path isDirectory:nil])
- {
- NSData *data = [NSData dataWithContentsOfFile:path];
- unsigned char digest[CC_MD5_DIGEST_LENGTH];
- CC_MD5( data.bytes, (CC_LONG)data.length, digest );
- NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
- for( int i = 0; i < CC_MD5_DIGEST_LENGTH; i++ )
- {
- [output appendFormat:@"%02x", digest[i]];
- }
- return output;
- }
- else
- {
- return @"";
- }
- }
- #pragma mark 关闭声音
- /**关闭其他播放声音*/
- + (void)closeVoice {
-
- NSError *categoryError = nil;
- BOOL success = [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&categoryError];
- if (!success)
- {
- HLog(@"Error setting audio session category: %@", categoryError);
- }
- NSError *activeError = nil;
- success = [[AVAudioSession sharedInstance] setActive:NO error:&activeError];
- if (!success)
- {
- HLog(@"Error setting audio session active: %@", activeError);
- }
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ // 恢复声音
- NSError *activeError1 = nil;
- BOOL success1 = [[AVAudioSession sharedInstance] setActive:YES error:&activeError1];
- if (!success1)
- {
- HLog(@"Error setting audio session active: %@", activeError1);
- }
- });
- }
- #pragma mark 其他
- /**防止N秒内,同部同接口频繁调用的处理*/
- + (BOOL)timeOverTosecode:(NSInteger)index bannerOldTime:(NSString *)bannerOldTime;
- {
- BOOL reFreshDevice_flag = YES;
-
- NSString *nowTime = [iTools getNowTimeStampString];
-
- NSString *oldTime = nil;
- if (![bannerOldTime isEqual:@""]) {
- oldTime = bannerOldTime;
- }
-
- //比较
- if ([oldTime length] > 0) {
- //时间差
- NSDate *dateNow = [iTools getTimeStringToDate:nowTime];
- NSDate *dateOld = [iTools getTimeStringToDate:oldTime];
- NSTimeInterval distanceBetweenDates = [dateNow timeIntervalSinceDate:dateOld];
- long long min = [[NSNumber numberWithDouble:distanceBetweenDates] longLongValue];
- if (min < index)
- {
- reFreshDevice_flag = NO;
- }else{
- reFreshDevice_flag = YES;
- }
- }
- return reFreshDevice_flag;
- }
- // 根据文件ID 获取文件中心文件URL地址
- + (NSURL *)getFileUrlFromFileID:(NSString *)ID {
-
- NSString *fileUrl = [NSString stringWithFormat:@"%@/document/newFile/download/0/%@?fileKey=%@",FileService,Const_File_Access_Key,ID];
- return [NSURL URLWithString:fileUrl];
-
- }
- // 显示base64二进制图片
- + (void)setImageView:(UIImageView *)imageView WithBase64String:(NSString *)avatar {
- //参数在这里 + (void) setImageView:(UIImageView *)imageView WithString:(NSString *)avatar
- //二进制显示
- /*服务器返回:例如
- data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAIAAACRXR/mAAAABnRSTlMAAAAAAABupgeRAAAAhElEQVRYhe3Y0QmAIBhF4YwGaZRGaNRGaJRGaYEyTj/RfTjnVYQPBRXbuh9DXuPfgOtkkWSRZJFkkUJZU3H+tsx3Q5VrLXS1ZJFkkWSRZJFkkWSRZJFkkUJZLfPH5vktX3mtv54buomySLJIskihrNBTvvWHP0V37oDQTZRFkkWSRQplnQDfEjVVBe3tAAAAAElFTkSuQmCC
-
- *上面的字符串复制到浏览器是可以显示出来一个图片的,这里说一下,字符串前面的data:image/png;base64是这个图片的格式,
- * web上面 解析好像是需要这部分的,但是拿到我们的iOS平台上,是不需要这部分的,有这部分反而解析不出来图片。
- * 所以这里可以说这部分属于格式部分,so我们显示的时候不要这部分。
- */
- NSArray *imageArray = [avatar componentsSeparatedByString:@","];
- NSData *imageData = [[NSData alloc] initWithBase64EncodedString:imageArray[1] options:NSDataBase64DecodingIgnoreUnknownCharacters];
- UIImage *image = [UIImage imageWithData:imageData];
- imageView.image = [iTools cutAlphaZero:image];
- }
- /// iOS裁剪掉图片周围透明度为0的部分
- + (UIImage *)cutAlphaZero:(UIImage *)image {
-
- CGImageRef cgimage = [image CGImage];
-
- size_t width = CGImageGetWidth(cgimage); // 图片宽度
- size_t height = CGImageGetHeight(cgimage); // 图片高度
-
- unsigned char *data = (unsigned char *)calloc(width * height * 4, sizeof(unsigned char)); // 取图片首地址
- size_t bitsPerComponent = 8; // r g b a 每个component bits数目
- size_t bytesPerRow = width * 4; // 一张图片每行字节数目 (每个像素点包含r g b a 四个字节)
- CGColorSpaceRef space = CGColorSpaceCreateDeviceRGB(); // 创建rgb颜色空间
-
- CGContextRef context = CGBitmapContextCreate(data, width,height,bitsPerComponent,bytesPerRow,space,kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
-
- CGContextDrawImage(context, CGRectMake(0, 0, width, height), cgimage);
- int top = 0; // 上边框透明高度
- int left = 0; // 左边框透明高度
- int right = 0; // 右边框透明高度
- int bottom = 0; // 底边框透明高度
-
- for (size_t row = 0; row < height; row++) {
- BOOL find = false;
- for (size_t col = 0; col < width; col++) {
- size_t pixelIndex = (row * width + col) * 4;
- // int red = data[pixelIndex];
- // int green = data[pixelIndex+1];
- // int blue = data[pixelIndex + 2];
- int alpha = data[pixelIndex + 3];
- if (alpha != 0) {
- find = YES;
- break;
- }
- }
- if (find) {
- break;
- }
- top ++;
- }
-
- for (size_t col = 0; col < width; col++) {
- BOOL find = false;
- for (size_t row = 0; row < height; row++) {
- size_t pixelIndex = (row * width + col) * 4;
-
- int alpha = data[pixelIndex + 3];
- if (alpha != 0) {
- find = YES;
- break;
- }
- }
- if (find) {
- break;
- }
- left ++;
- }
-
- for (size_t col = width - 1; col > 0; col--) {
- BOOL find = false;
- for (size_t row = 0; row < height; row++) {
- size_t pixelIndex = (row * width + col) * 4;
-
- int alpha = data[pixelIndex + 3];
- if (alpha != 0) {
- find = YES;
- break;
- }
- }
- if (find) {
- break;
- }
- right ++;
- }
-
- for (size_t row = height - 1; row > 0; row--) {
- BOOL find = false;
- for (size_t col = 0; col < width; col++) {
- size_t pixelIndex = (row * width + col) * 4;
- int alpha = data[pixelIndex + 3];
- if (alpha != 0) {
- find = YES;
- break;
- }
- }
- if (find) {
- break;
- }
- bottom ++;
- }
-
- CGFloat scale = image.scale;
- CGImageRef newImageRef = CGImageCreateWithImageInRect(cgimage, CGRectMake(left * scale, top *scale, (image.size.width - left - right)*scale, (image.size.height - top - bottom)*scale));
- UIImage *newImage = [UIImage imageWithCGImage:newImageRef];
- // 释放
- CGImageRelease(cgimage);
- CGContextRelease(context);
- CGColorSpaceRelease(space);
- return newImage;
- }
- + (NSUInteger)getIndexFromCloudPhoneListWithModel:(CloudPhoneModel *)model {
-
- NSUInteger index = 0;
-
- for (NSUInteger i = 0; i < [UseAccountManage shareInstance].cloudPhoneListModel.diskInfo.count; i++) {
- CloudPhoneModel *itemModel = [[UseAccountManage shareInstance].cloudPhoneListModel.diskInfo objectAtIndex:i];
- if (itemModel.phoneId == model.phoneId) {
- index = i;
- break;
- }
- }
-
- return index;
- }
- + (NSUInteger)getIndexFromCloudPhoneListWithPhoneID:(NSInteger)phoneId {
-
- NSUInteger index = 0;
-
- for (NSUInteger i = 0; i < [UseAccountManage shareInstance].cloudPhoneListModel.diskInfo.count; i++) {
- CloudPhoneModel *itemModel = [[UseAccountManage shareInstance].cloudPhoneListModel.diskInfo objectAtIndex:i];
- if (itemModel.phoneId == phoneId) {
- index = i;
- break;
- }
- }
-
- return index;
- }
- + (NSDate *)getInternetDate{
- NSString *urlString = @"http://m.baidu.com";
- urlString = [urlString stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
- // 实例化NSMutableURLRequest,并进行参数配置
- NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
- [request setURL:[NSURL URLWithString: urlString]];
- [request setCachePolicy:NSURLRequestReloadIgnoringCacheData];
- [request setTimeoutInterval: 2];
- [request setHTTPShouldHandleCookies:FALSE];
- [request setHTTPMethod:@"GET"];
- NSError *error = nil;
- NSHTTPURLResponse *response;
- [NSURLConnection sendSynchronousRequest:request
- returningResponse:&response error:&error];
- // 处理返回的数据
- if (error) {
- return [NSDate date];
- }
- NSString *date = [[response allHeaderFields] objectForKey:@"Date"];
- date = [date substringFromIndex:5];//index到这个字符串的结尾
- date = [date substringToIndex:[date length]-4];//从索引0到给定的索引index
- NSDateFormatter *dMatter = [[NSDateFormatter alloc] init];
- dMatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
- [dMatter setDateFormat:@"dd MMM yyyy HH:mm:ss"];
- NSDate *netDate = [dMatter dateFromString:date];//时间差8小时
- NSTimeZone *zone = [NSTimeZone systemTimeZone];
- NSInteger interval = [zone secondsFromGMTForDate: netDate];
- netDate = [netDate dateByAddingTimeInterval: interval];
-
- return netDate;
- }
- + (NSString *)getInternetDateString{
- NSString *urlString = @"http://m.baidu.com";
- urlString = [urlString stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
- // 实例化NSMutableURLRequest,并进行参数配置
- NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
- [request setURL:[NSURL URLWithString: urlString]];
- [request setCachePolicy:NSURLRequestReloadIgnoringCacheData];
- [request setTimeoutInterval: 2];
- [request setHTTPShouldHandleCookies:FALSE];
- [request setHTTPMethod:@"GET"];
- NSError *error = nil;
- NSHTTPURLResponse *response;
- [NSURLConnection sendSynchronousRequest:request
- returningResponse:&response error:&error];
- // 处理返回的数据
- if (error) {
- NSDate *nowDate = [NSDate date];
- NSDateFormatter *format = [[NSDateFormatter alloc] init];
- [format setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
- NSString *dateStr = [format stringFromDate:nowDate];
-
- return dateStr;
- }
- NSString *date = [[response allHeaderFields] objectForKey:@"Date"];
- date = [date substringFromIndex:5];//index到这个字符串的结尾
- date = [date substringToIndex:[date length]-4];//从索引0到给定的索引index
- NSDateFormatter *dMatter = [[NSDateFormatter alloc] init];
- dMatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
- [dMatter setDateFormat:@"dd MMM yyyy HH:mm:ss"];
- NSDate *netDate = [dMatter dateFromString:date];//时间差8小时
- NSTimeZone *zone = [NSTimeZone systemTimeZone];
- NSInteger interval = [zone secondsFromGMTForDate: netDate];
- netDate = [netDate dateByAddingTimeInterval: interval];
-
- NSDateFormatter *format1 = [[NSDateFormatter alloc] init];
- [format1 setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
- NSString *dateStr = [format1 stringFromDate:netDate];
-
- return dateStr;
- }
- @end
|