-(UIImage*)image:(UIImage*)image rotation:(UIImageOrientation)orientation
{
? ? longdoublerotate =0.0;
? ? CGRectrect;
? ? floattranslateX =0;
? ? floattranslateY =0;
? ? floatscaleX =1.0;
? ? floatscaleY =1.0;
? ? switch(orientation) {
? ? ? ? case UIImageOrientationLeft:
? ? ? ? ? ? rotate =M_PI_2;
? ? ? ? ? ? rect =CGRectMake(0,0, image.size.height, image.size.width);
? ? ? ? ? ? translateX =0;
? ? ? ? ? ? translateY = -rect.size.width;
? ? ? ? ? ? scaleY = rect.size.width/rect.size.height;
? ? ? ? ? ? scaleX = rect.size.height/rect.size.width;
? ? ? ? ? ? break;
? ? ? ? case UIImageOrientationRight:
? ? ? ? ? ? rotate =3*M_PI_2;
? ? ? ? ? ? rect =CGRectMake(0,0, image.size.height, image.size.width);
? ? ? ? ? ? translateX = -rect.size.height;
? ? ? ? ? ? translateY =0;
? ? ? ? ? ? scaleY = rect.size.width/rect.size.height;
? ? ? ? ? ? scaleX = rect.size.height/rect.size.width;
? ? ? ? ? ? break;
? ? ? ? case UIImageOrientationDown:
? ? ? ? ? ? rotate =M_PI;
? ? ? ? ? ? rect =CGRectMake(0,0, image.size.width, image.size.height);
? ? ? ? ? ? translateX = -rect.size.width;
? ? ? ? ? ? translateY = -rect.size.height;
? ? ? ? ? ? break;
? ? ? ? default:
? ? ? ? ? ? rotate =0.0;
? ? ? ? ? ? rect =CGRectMake(0,0, image.size.width, image.size.height);
? ? ? ? ? ? translateX =0;
? ? ? ? ? ? translateY =0;
? ? ? ? ? ? break;
? ? }
? ? UIGraphicsBeginImageContext(rect.size);
? ? CGContextRef context =UIGraphicsGetCurrentContext();
? ? //做CTM變換
? ? CGContextTranslateCTM(context,0.0, rect.size.height);
? ? CGContextScaleCTM(context,1.0, -1.0);
? ? CGContextRotateCTM(context, rotate);
? ? CGContextTranslateCTM(context, translateX, translateY);
? ? CGContextScaleCTM(context, scaleX, scaleY);
? ? //繪制圖片
? ? CGContextDrawImage(context,CGRectMake(0,0, rect.size.width, rect.size.height), image.CGImage);
? ? UIImage *newPic =UIGraphicsGetImageFromCurrentImageContext();
? ? returnnewPic;
}