自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

iPhone開發(fā)應用UIImage圖片對象操作

移動開發(fā) iOS
iPhone開發(fā)應用UIImage圖片對象操作是本文要介紹的內(nèi)容,主要來學習UIImage圖片對象操作,內(nèi)容不多,主要是以代碼實現(xiàn)圖片對象的操作。

iPhone開發(fā)應用UIImage圖片對象操作是本文要介紹的內(nèi)容,主要來學習UIImage圖片對象操作,內(nèi)容不多,主要是以代碼實現(xiàn)圖片對象的操作。

1、根據(jù)給定得圖片,從其指定區(qū)域截取一張新得圖片。

  1. -(UIImage *)getImageFromImage{   
  2.     //大圖bigImage   
  3.     //定義myImageRect,截圖的區(qū)域   
  4.     CGRect myImageRect = CGRectMake(10.0, 10.0, 57.0, 57.0);   
  5.     UIImage* bigImage= [UIImage imageNamed:@"k00030.jpg"];   
  6.     CGImageRef imageRef = bigImage.CGImage;   
  7.     CGImageRef subImageRef = CGImageCreateWithImageInRect(imageRef, myImageRect);   
  8.     CGSize size;   
  9.     size.width = 57.0;   
  10.     size.height = 57.0;   
  11.     UIGraphicsBeginImageContext(size);   
  12.     CGContextRef context = UIGraphicsGetCurrentContext();   
  13.     CGContextDrawImage(context, myImageRect, subImageRef);   
  14.     UIImage* smallImage = [UIImage imageWithCGImage:subImageRef];   
  15.     UIGraphicsEndImageContext();   
  16.     return smallImage;   

2、針對UIImage得一些常用縮放得方法:

  1. -(UIImage*)resizedImage1:(UIImage*)inImage  inRect:(CGRect)thumbRect {   
  2.     // Creates a bitmap-based graphics context and makes it the current context.   
  3.     UIGraphicsBeginImageContext(thumbRect.size);   
  4.     [inImage drawInRect:thumbRect];   
  5.     return UIGraphicsGetImageFromCurrentImageContext();   
  6. }   
  7. -(UIImage*)resizedImage2:(UIImage*)inImage  inRect:(CGRect)thumbRect {   
  8.     CGImageRef          imageRef = [inImage CGImage];   
  9.     CGImageAlphaInfo    alphaInfo = CGImageGetAlphaInfo(imageRef);   
  10.     /* There's a wierdness with kCGImageAlphaNone and CGBitmapContextCreate   
  11.     see Supported Pixel Formats in the Quartz 2D Programming Guide   
  12.     Creating a Bitmap Graphics Context section   
  13.     only RGB 8 bit images with alpha of kCGImageAlphaNoneSkipFirst,         
  14. kCGImageAlphaNoneSkipLast, kCGImageAlphaPremultipliedFirst,and kCGImageAlphaPremultipliedLast, 
  15. with a few other oddball image kinds are supported   
  16. The images on input here are likely to be png or jpeg files*/   
  17.     if (alphaInfo == kCGImageAlphaNone)   
  18.         alphaInfo = kCGImageAlphaNoneSkipLast;   
  19.         // Build a bitmap context that's the size of the thumbRect   
  20.        CGFloat bytesPerRow;   
  21.     if( thumbRect.size.width > thumbRect.size.height ) {   
  22.        bytesPerRow = 4 * thumbRect.size.width;   
  23.     } else {   
  24.        bytesPerRow = 4 * thumbRect.size.height;   
  25.     }   
  26.     CGContextRef bitmap = CGBitmapContextCreate(NULL,   
  27.                                                         thumbRect.size.width,       // width   
  28.                                                         thumbRect.size.height,      // height   
  29.                                                         8, //CGImageGetBitsPerComponent(imageRef),  // really needs to always be 8   
  30.                                                         bytesPerRow, //4 * thumbRect.size.width,    // rowbytes   
  31.                                                         CGImageGetColorSpace(imageRef),   
  32.                                                         alphaInfo   
  33. );   
  34.     // Draw into the context, this scales the image   
  35.     CGContextDrawImage(bitmap, thumbRect, imageRef);   
  36.     // Get an image from the context and a UIImage   
  37.     CGImageRef  ref = CGBitmapContextCreateImage(bitmap);   
  38.     UIImage*    result = [UIImage imageWithCGImage:ref];   
  39.     CGContextRelease(bitmap);   // ok if NULL   
  40.     CGImageRelease(ref);   
  41.     return result;   
  42. }   
  43. - (UIImage *)scaleImage:(UIImage *) image maxWidth:(float) maxWidth maxHeight:(float) maxHeight   
  44. {   
  45.     CGImageRef imgRef = image.CGImage;   
  46.     CGFloat width = CGImageGetWidth(imgRef);   
  47.     CGFloat height = CGImageGetHeight(imgRef);   
  48.     if (width <= maxWidth && height <= maxHeight)   
  49.     {   
  50.         return image;   
  51.     }   
  52.     CGAffineTransform transform = CGAffineTransformIdentity;   
  53.     CGRect bounds = CGRectMake(0, 0, width, height);   
  54.     if (width > maxWidth || height > maxHeight)   
  55.     {   
  56.         CGFloat ratio = width/height;   
  57.         if (ratio > 1)   
  58.         {   
  59.             bounds.size.width = maxWidth;   
  60.             boundsbounds.size.height = bounds.size.width / ratio;   
  61.         }   
  62.         else   
  63.         {   
  64.             bounds.size.height = maxHeight;   
  65.              boundsbounds.size.width = bounds.size.height * ratio;   
  66.         }   
  67.     }   
  68.     CGFloat scaleRatio = bounds.size.width / width;   
  69.     UIGraphicsBeginImageContext(bounds.size);   
  70.     CGContextRef context = UIGraphicsGetCurrentContext();   
  71.     CGContextScaleCTM(context, scaleRatio, -scaleRatio);   
  72.     CGContextTranslateCTM(context, 0, -height);   
  73.     CGContextConcatCTM(context, transform);   
  74.     CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(0, 0, width, height), imgRef);   
  75.     UIImage *imageCopy = UIGraphicsGetImageFromCurrentImageContext();   
  76.     UIGraphicsEndImageContext();   
  77.     return imageCopy;   

3、其他縮放UIImage的size,有需要的可以看看

  1. -(UIImage*) scaleAndRotateImage:(UIImage*)photoimage:(CGFloat)bounds_width:(CGFloat)bounds_height   
  2. {   
  3.     //int kMaxResolution = 300;   
  4.     CGImageRef imgRef =photoimage.CGImage;   
  5.     CGFloat width = CGImageGetWidth(imgRef);   
  6.     CGFloat height = CGImageGetHeight(imgRef);   
  7.     CGAffineTransform transform = CGAffineTransformIdentity;   
  8.     CGRect bounds = CGRectMake(0, 0, width, height);   
  9.     /*if (width > kMaxResolution || height > kMaxResolution)   
  10.     {   
  11.         CGFloat ratio = width/height;   
  12.         if (ratio > 1)   
  13.         {   
  14.             bounds.size.width = kMaxResolution;   
  15.             boundsbounds.size.height = bounds.size.width / ratio;   
  16.         }   
  17.         else   
  18.         {   
  19.             bounds.size.height = kMaxResolution;   
  20.             boundsbounds.size.width = bounds.size.height * ratio;   
  21.         }   
  22.     }*/   
  23.     bounds.size.width = bounds_width;   
  24.     bounds.size.height = bounds_height;   
  25.     CGFloat scaleRatio = bounds.size.width / width;   
  26.     CGFloat scaleRatioheight = bounds.size.height / height;   
  27.     CGSize imageSize = CGSizeMake(CGImageGetWidth(imgRef), CGImageGetHeight(imgRef));   
  28.     CGFloat boundHeight;   
  29.     UIImageOrientation orient =photoimage.imageOrientation;   
  30.     switch(orient)   
  31.     {   
  32.         case UIImageOrientationUp: //EXIF = 1   
  33.             transform = CGAffineTransformIdentity;   
  34.             break;   
  35.         case UIImageOrientationUpMirrored: //EXIF = 2   
  36.             transform = CGAffineTransformMakeTranslation(imageSize.width, 0.0);   
  37.             transform = CGAffineTransformScale(transform, -1.0, 1.0);   
  38.             break;   
  39.         case UIImageOrientationDown: //EXIF = 3   
  40.             transform = CGAffineTransformMakeTranslation(imageSize.width, imageSize.height);   
  41.             transform = CGAffineTransformRotate(transform, M_PI);   
  42.             break;   
  43.         case UIImageOrientationDownMirrored: //EXIF = 4   
  44.             transform = CGAffineTransformMakeTranslation(0.0, imageSize.height);   
  45.             transform = CGAffineTransformScale(transform, 1.0, -1.0);   
  46.             break;   
  47.         case UIImageOrientationLeftMirrored: //EXIF = 5   
  48.             boundHeight = bounds.size.height;   
  49.             boundsbounds.size.height = bounds.size.width;   
  50.             bounds.size.width = boundHeight;   
  51.             transform = CGAffineTransformMakeTranslation(imageSize.height, imageSize.width);   
  52.             transform = CGAffineTransformScale(transform, -1.0, 1.0);   
  53.             transform = CGAffineTransformRotate(transform, 3.0 * M_PI / 2.0);   
  54.             break;   
  55.         case UIImageOrientationLeft: //EXIF = 6   
  56.             boundHeight = bounds.size.height;   
  57.             boundsbounds.size.height = bounds.size.width;   
  58.             bounds.size.width = boundHeight;   
  59.             transform = CGAffineTransformMakeTranslation(0.0, imageSize.width);   
  60.             transform = CGAffineTransformRotate(transform, 3.0 * M_PI / 2.0);   
  61.             break;   
  62.         case UIImageOrientationRightMirrored: //EXIF = 7   
  63.             boundHeight = bounds.size.height;   
  64.             boundsbounds.size.height = bounds.size.width;   
  65.             bounds.size.width = boundHeight;   
  66.             transform = CGAffineTransformMakeScale(-1.0, 1.0);   
  67.             transform = CGAffineTransformRotate(transform, M_PI / 2.0);   
  68.             break;   
  69.         case UIImageOrientationRight: //EXIF = 8   
  70.             boundHeight = bounds.size.height;   
  71.             boundsbounds.size.height = bounds.size.width;   
  72.             bounds.size.width = boundHeight;   
  73.             transform = CGAffineTransformMakeTranslation(imageSize.height, 0.0);   
  74.             transform = CGAffineTransformRotate(transform, M_PI / 2.0);   
  75.             break;   
  76.         default:   
  77.             [NSException raise:NSInternalInconsistencyException format:@"Invalid?image?orientation"];   
  78.             break;   
  79.     }   
  80.     UIGraphicsBeginImageContext(bounds.size);   
  81.     CGContextRef context = UIGraphicsGetCurrentContext();   
  82.     if (orient == UIImageOrientationRight || orient == UIImageOrientationLeft)   
  83.     {   
  84.         CGContextScaleCTM(context, -scaleRatio, scaleRatioheight);   
  85.         CGContextTranslateCTM(context, -height, 0);   
  86.     }   
  87.     else   
  88.     {   
  89.         CGContextScaleCTM(context, scaleRatio, -scaleRatioheight);   
  90.         CGContextTranslateCTM(context, 0, -height);   
  91.     }   
  92.     CGContextConcatCTM(context, transform);   
  93.     CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(0, 0, width, height), imgRef);   
  94.     UIImage *imageCopy = UIGraphicsGetImageFromCurrentImageContext();   
  95.     UIGraphicsEndImageContext();   
  96.     return imageCopy;   

小結(jié):iPhone開發(fā)應用UIImage圖片對象操作的內(nèi)容介紹完了,希望通過本文的學習能對你有所幫助!

責任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-08-11 17:15:54

iPhone歸檔

2011-08-22 14:12:48

iPhone開發(fā)NSTableView

2011-08-03 16:01:24

iPhone應用開發(fā) 自動登陸

2011-08-12 13:30:27

iPhoneASIFormData架構(gòu)

2011-07-26 11:13:15

iPhone PXL

2011-07-19 09:46:38

2011-07-08 14:58:16

iPhone Xcode iOS

2011-07-19 09:58:36

2011-07-27 17:07:06

iPhone 游戲 Cocos2d

2011-08-08 16:56:44

iPhone 字符處理 視圖

2011-08-08 10:10:14

iPhone開發(fā) 圖片 方法

2011-08-09 17:29:29

iPhone文件屏幕

2011-08-10 10:10:21

iPhoneUIPopoverCo

2011-07-26 16:43:59

iPhone Web 服務器

2011-07-08 15:08:16

iPhone 圖片

2011-08-08 14:57:46

iPhone Autoreleas Property

2011-08-09 13:10:32

iPhone地圖開發(fā)

2011-08-11 10:03:43

iPhonecocoaNSRunLoop

2011-08-05 14:48:06

iPhone應用 異步隊列

2011-08-10 17:37:00

iPhoneASIHTTPRequ
點贊
收藏

51CTO技術(shù)棧公眾號