首页 > 代码库 > [转]常用iOS图片处理方法
[转]常用iOS图片处理方法
+ (UIImage?*)getPicZoomImage:(UIImage?*)image {
?
????UIImage?*img = image;
????
????int?h = img.size.height;
????int?w = img.size.width;
????if(h <=?PicAfterZoomWidth?&& w <=?PicAfterZoomHeight)
????{
????????image = img;
????}
????else?
????{
????????float?b = (float)PicAfterZoomWidth/w < (float)PicAfterZoomHeight/h ? (float)PicAfterZoomWidth/w : (float)PicAfterZoomHeight/h;
????????CGSize?itemSize =?CGSizeMake(b*w, b*h);
????????UIGraphicsBeginImageContext(itemSize);
????????CGRect?imageRect =?CGRectMake(0,?0, b*w, b*h);
????????[img?drawInRect:imageRect];
????????img =?UIGraphicsGetImageFromCurrentImageContext();
????????UIGraphicsEndImageContext();
????}
????return?img;
}
?===============?( two )把图片 圆角 化==================================
?
static?void?addRoundedRectToPath(CGContextRef?context,?CGRect?rect,?float?ovalWidth,
?????????????????????????????????float?ovalHeight)
{
????float?fw, fh;
????if?(ovalWidth ==?0?|| ovalHeight ==?0) {
????????CGContextAddRect(context, rect);
????????return;
????}
????CGContextSaveGState(context);
????CGContextTranslateCTM(context,?CGRectGetMinX(rect),?CGRectGetMinY(rect));
????CGContextScaleCTM(context, ovalWidth, ovalHeight);
????fw =?CGRectGetWidth(rect) / ovalWidth;
????fh =?CGRectGetHeight(rect) / ovalHeight;
????CGContextMoveToPoint(context, fw, fh/2);??// Start at lower right corner
????CGContextAddArcToPoint(context, fw, fh, fw/2, fh,?1);??// Top right corner
????CGContextAddArcToPoint(context,?0, fh,?0, fh/2,?1);?// Top left corner
????CGContextAddArcToPoint(context,?0,?0, fw/2,?0,?1);?// Lower left corner
????CGContextAddArcToPoint(context, fw,?0, fw, fh/2,?1);?// Back to lower right
????CGContextClosePath(context);
????CGContextRestoreGState(context);
}
+ (id) createRoundedRectImage:(UIImage*)image size:(CGSize)size
{
????// the size of CGContextRef
????int?w = size.width;
????int?h = size.height;
????
????UIImage?*img = image;
????CGColorSpaceRef?colorSpace =?CGColorSpaceCreateDeviceRGB();
????CGContextRef?context =?CGBitmapContextCreate(NULL, w, h,?8,?4?* w, colorSpace,kCGImageAlphaPremultipliedFirst);
????CGRect?rect =?CGRectMake(0,?0, w, h);
????CGContextBeginPath(context);
????addRoundedRectToPath(context, rect,?10,?10);
????CGContextClosePath(context);
????CGContextClip(context);
????CGContextDrawImage(context,?CGRectMake(0,?0, w, h), img.CGImage);
????CGImageRef?imageMasked =?CGBitmapContextCreateImage(context);
????CGContextRelease(context);
????CGColorSpaceRelease(colorSpace);
????return?[UIImage?imageWithCGImage:imageMasked];
}
=============== (Three)给图片 添加阴影==================================
請先添加库 import QuartzCore.framework
然后要导入头文件 #import <QuartzCore/QuartzCore.h>
[[myView layer] setShadowOffset:CGSizeMake(5, 5)]; //设置阴影起点位置
[[myView layer] setShadowRadius:6]; ??????????????????????//设置阴影扩散程度
[[myView layer] setShadowOpacity:1]; ?????????????????????//设置阴影透明度
[[myView layer] setShadowColor:[UIColor blueColor].CGColor]; //设置阴影颜色
?==========?(Four) UIImage 图像 旋转==================================
- (UIImage?*)imageRotatedByRadians:(CGFloat)radians
{
????return?[self?imageRotatedByDegrees:radians *?180/M_PI];
}
- (UIImage?*)imageRotatedByDegrees:(CGFloat)degrees?
{???
????// calculate the size of the rotated view‘s containing box for our drawing space
????UIView?*rotatedViewBox = [[UIView?alloc]?initWithFrame:CGRectMake(0,0,self.size.width,self.size.height)];
????CGAffineTransform?t =?CGAffineTransformMakeRotation(degrees *?M_PI?/?180);
????rotatedViewBox.transform?= t;
????CGSize?rotatedSize = rotatedViewBox.frame.size;
????[rotatedViewBox?release];
????// Create the bitmap context
????UIGraphicsBeginImageContext(rotatedSize);
????CGContextRef?bitmap =?UIGraphicsGetCurrentContext();
????// Move the origin to the middle of the image so we will rotate and scale around the center.
????CGContextTranslateCTM(bitmap, rotatedSize.width/2, rotatedSize.height/2);
????
????// ??// Rotate the image context
????CGContextRotateCTM(bitmap, degrees *?M_PI?/?180);
????// Now, draw the rotated/scaled image into the context
????CGContextScaleCTM(bitmap,?1.0, -1.0);
????CGContextDrawImage(bitmap,?CGRectMake(-self.size.width?/?2, -self.size.height?/?2,self.size.width,?self.size.height), [self?CGImage]);
????UIImage?*newImage =?UIGraphicsGetImageFromCurrentImageContext();
????UIGraphicsEndImageContext();
????return?newImage;
}
图像旋转更多请看:http://www.catamount.com/blog/1015/uiimage-extensions-for-cutting-scaling-and-rotating-uiimages/
[转]常用iOS图片处理方法