2015-03-02 83 views
1
- (UIImage *)resizeImage:(UIImage*)image newSize:(CGSize)newSize { 
CGRect newRect = CGRectIntegral(CGRectMake(0, 0, newSize.width, newSize.height)); //CGSize is 51*51 
CGImageRef imageRef = image.CGImage; 

UIGraphicsBeginImageContextWithOptions(newSize, NO, 0); 
CGContextRef context = UIGraphicsGetCurrentContext(); 

// Set the quality level to use when rescaling 
CGContextSetInterpolationQuality(context, kCGInterpolationHigh); 
CGAffineTransform flipVertical = CGAffineTransformMake(1, 0, 0, -1, 0, newSize.height); 

CGContextConcatCTM(context, flipVertical); 
// Draw into the context; this scales the image 
CGContextDrawImage(context, newRect, imageRef); 

// Get the resized image from the context and a UIImage 
CGImageRef newImageRef = CGBitmapContextCreateImage(context); 
UIImage *newImage = [UIImage imageWithCGImage:newImageRef]; 

CGImageRelease(newImageRef); 
UIGraphicsEndImageContext(); 
NSLog(@"size of resizeimage is %@",NSStringFromCGSize(newImage.size)); // here i get 102*102 
return newImage; 
} 

我进入cgsize是51 * 51,调整大小的UIImage没有给我确切的新的大小调整后

和调整后,当我检查的大小及其给我102 * 102。

为什么?请解决我的问题。

+0

ü尝试搜索乌尔问题的答案吗? http://stackoverflow.com/a/2658801/887325 – Bimawa 2015-03-02 12:09:51

+0

大小51 * 51是指非视网膜版本的图像。你应该使用视网膜显示,因此,你会得到2倍的价值。这在技术上是正确的。 – 2015-03-02 12:24:49

+0

非常感谢Jasmeet Singh。你节省了我的时间。非常感谢!!! – MAC113 2015-03-03 03:52:03

回答

1

看看你UIGraphicsBeginImageContextWithOptions(newSize, NO, 0);,从苹果文档的尺度参数的意思是:

The scale factor to apply to the bitmap. If you specify a value of 0.0, the scale factor is set to the scale factor of the device’s main screen. 

所以,如果它是一个视网膜显示器,这是正常的。

0

我按照这个方法来调整图像

-(UIImage *)resizeImage:(UIImage *)image newSize:(CGSize)newSize 
{ 
    float actualHeight = image.size.height; 
    float actualWidth = image.size.width; 
    float maxHeight = newSize.height; 
    float maxWidth = newSize.width; 
    float imgRatio = actualWidth/actualHeight; 
    float maxRatio = maxWidth/maxHeight; 

    if (actualHeight > maxHeight || actualWidth > maxWidth) 
    { 
     if(imgRatio < maxRatio) 
     { 
     //adjust width according to maxHeight 
     imgRatio = maxHeight/actualHeight; 
     actualWidth = imgRatio * actualWidth; 
     actualHeight = maxHeight; 
     } 
     else if(imgRatio > maxRatio) 
     { 
     //adjust height according to maxWidth 
     imgRatio = maxWidth/actualWidth; 
     actualHeight = imgRatio * actualHeight; 
     actualWidth = maxWidth; 
     } 
     else 
     { 
     actualHeight = maxHeight; 
     actualWidth = maxWidth; 
     } 
    } 

    CGRect rect = CGRectMake(0.0, 0.0, actualWidth, actualHeight); 
    UIGraphicsBeginImageContext(rect.size); 
    [image drawInRect:rect]; 
    UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 


    NSLog(@"size of resizeimage is %@",NSStringFromCGSize(img.size)); 
    NSLog(@"size of original is %@",NSStringFromCGSize(image.size)); 


    return img; 

    } 
相关问题