2012-04-26 66 views
3

我正在尝试使用iPhone 4及更高版本在Objective-C中缩放图像,以便尽快将其发送到服务器。目前全尺寸的图像已经过时了。调整图像大小Objective-C

减员我想目前是:

CGSize imageSize; 

imageSize = CGSizeMake(484, 888); 

UIImage *img = [UIImage imageWithContentsOfFile:path]; 

UIGraphicsBeginImageContext(imageSize); 
[img drawInRect:CGRectMake(0,0,imageSize.width,imageSize.height)]; 
UIImage* realfrontImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
NSData *frontImageData = UIImageJPEGRepresentation(realfrontImage, 1.0); 

这给我的320x460我怎么得到它,我想484x888大小的图像。

任何帮助将不胜感激。

+0

xcode只是一个编辑器。 – vikingosegundo 2012-04-26 13:40:12

+0

感谢编辑很累。感谢迄今为止提出的想法。它们与我目前使用的非常相似,当我在服务器上查看它时,我最终得到尺寸为320x426的图像 – chrisw 2012-04-26 13:58:53

+0

您确定连接没有问题吗?我的意思是,如果上传到您的服务器受到干扰,它会给您留下未完成的图像上传,但是,这将主要影响图像的高度。 – 2012-04-29 17:57:40

回答

0

//调用这个函数与调整大小比...

-(UIImage*)scaleByRatio:(float) scaleRatio 
{ 
    CGSize scaledSize = CGSizeMake(self.size.width * scaleRatio, self.size.height * scaleRatio); 
    CGColorSpaceRef colorSpace; 
    int bitmapBytesPerRow; 
    bitmapBytesPerRow = (size.width * 4); 

    //The output context. 
    UIGraphicsBeginImageContext(scaledSize); 
    CGContextRef context = context = CGBitmapContextCreate (NULL, 
          scaledSize .width, 
          scaledSize .height, 
          8,  // bits per component 
          bitmapBytesPerRow, 
          colorSpace, 
          kCGImageAlphaPremultipliedLast); 

//Percent (101%)  
#define SCALE_OVER_A_BIT 1.01 

//Scale. 
CGContextScaleCTM(context, scaleRatio * SCALE_OVER_A_BIT, scaleRatio *  SCALE_OVER_A_BIT); 
[self drawAtPoint:CGPointZero]; 

    //End? 
    UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
return scaledImage; 
} 

希望,这将帮助你......

+0

对不起,但我该如何使用此功能我得到一个C99警告是无效 – chrisw 2012-04-26 15:07:37

+0

'#import '... – Nit 2012-04-26 17:56:55

+0

我必须使用它作为UIImage类别吗? – 2012-10-02 13:39:24

4
-(UIImage*)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize { 
    UIGraphicsBeginImageContext(newSize); 
    [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)]; 
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();  
    UIGraphicsEndImageContext(); 
    return newImage; 
} 

使用此方法缩小您的图像。

+0

如果我发送从这个方法检索到的图像,当我将它发送到服务器时,我得到一个320x426的图像,它似乎只是像屏幕截图一样大小的屏幕。 – chrisw 2012-04-26 14:17:25

+0

我在CGBitmapContextCreate上得到EXC_BAD_ACCESS – chrisw 2012-04-26 15:22:13

+0

我发现这种方式有内存泄漏,之后iOS 5.0看到以下内容! http://stackoverflow.com/a/4712537/1752988 – 2014-04-15 20:11:38