我有个一张图片200x200现在想把它缩小到100x100然后返回UIImage接口。

解决方案 »

  1.   

    @implementation UIImage (Extras)#pragma  -
    #pragma  Scale and crop image- (UIImage*)imageByScalingAndCroppingForSize:(CGSize)targetSize
    {
    UIImage *sourceImage = self;
    UIImage *newImage = nil;        
    CGSize imageSize = sourceImage.size;
    CGFloat width = imageSize.width;
    CGFloat height = imageSize.height;
    CGFloat targetWidth = targetSize.width;
    CGFloat targetHeight = targetSize.height;
    CGFloat scaleFactor = 0.0;
    CGFloat scaledWidth = targetWidth;
    CGFloat scaledHeight = targetHeight;
    CGPoint thumbnailPoint = CGPointMake(0.0,0.0);if (CGSizeEqualToSize(imageSize, targetSize) == NO) 
            {
            CGFloat widthFactor = targetWidth / width;
            CGFloat heightFactor = targetHeight / height;        if (widthFactor > heightFactor) 
                    scaleFactor = widthFactor; // scale to fit height
            else
                    scaleFactor = heightFactor; // scale to fit width
            scaledWidth  = width * scaleFactor;
            scaledHeight = height * scaleFactor;        // center the image
            if (widthFactor > heightFactor)
                    {
                    thumbnailPoint.y = (targetHeight - scaledHeight) * 0.5; 
                    }
            else 
                    if (widthFactor < heightFactor)
                            {
                            thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5;
                            }
            }       UIGraphicsBeginImageContext(targetSize); // this will cropCGRect thumbnailRect = CGRectZero;
    thumbnailRect.origin = thumbnailPoint;
    thumbnailRect.size.width  = scaledWidth;
    thumbnailRect.size.height = scaledHeight;[sourceImage drawInRect:thumbnailRect];newImage = UIGraphicsGetImageFromCurrentImageContext();
    if(newImage == nil) 
            NSLog(@"could not scale image");//pop the context to get back to the default
    UIGraphicsEndImageContext();
    return newImage;
    }