2012-04-26 21 views
3

Objective-CのイメージをiPhone 4以上でダウンスケーリングしようとしていますので、できるだけ早くサーバーに送信できます。現時点では、フルサイズでの画像は年月を経ています。イメージのサイズ変更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); 

これは私がそれ、私は484x888を望んでいたサイズ得るのですか320x460の画像を提供します。

ご協力いただければ幸いです。

+0

xcodeは単なるエディタです。 – vikingosegundo

+0

非常に疲れて編集していただきありがとうございます。これまでに提案されたアイディアに感謝します。彼らは私が現時点で使用しているものとかなり似ていて、サーバーで見ると320x426のサイズの画像になります – chrisw

+0

接続に問題はないと思いますか?つまり、サーバーへのアップロードが妨害された場合、アップロードされていない画像が残っていますが、これは主に画像の高さに影響します。 –

答えて

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

+0

'#import '... – Nit

+0

UIImageカテゴリとして使用する必要がありますか? –

0

たぶんこの記事はあなたがアウトに役立ちます:How to resize the image programmatically in objective-c in iphone

注意してください。あなたはObjective-Cでこれをやっています.XCodeではありません。 XcodeはObjective-cを開発するアプリケーションです。 NetbeansやEclipseのように、JavaやPHPでよく使われます。

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

+0

CGBitmapContextCreateでEXC_BAD_ACCESSを取得しました – chrisw

+0

この方法でメモリリークが発生しました。その後、iOS 5.0で以下を参照してください! http://stackoverflow.com/a/4712537/1752988 –

関連する問題