2

私は電話(640 * 480)で写真を作り、uiimageview (300*300)オプションセットを埋めるためにスケールで中に入れます。内部に表示されているのと同じ画像uiimageview (300*300, croped, resized)をサーバーに送信する必要があります。

どうすれば入手できますか?

4

2 に答える 2

3

UIImageViewレイヤーをグラフィックスコンテキストにレンダリングすることにより、これを行うための簡単な方法があります。

UIGraphicsBeginImageContext(self.bounds.size);
[self.imageView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

これにはインポートする必要があります<QuartzCore/QuartzCore.h>

もう 1 つの方法は、AspectFill の計算を自分で行うことです。

 CGSize finalImageSize = CGSizeMake(300,300);
 CGImageRef sourceImageRef = yourImage.CGImage;

CGFloat horizontalRatio = finalImageSize.width / CGImageGetWidth(sourceImageRef);
CGFloat verticalRatio = finalImageSize.height / CGImageGetHeight(sourceImageRef);
CGFloat ratio = MAX(horizontalRatio, verticalRatio); //AspectFill
CGSize aspectFillSize = CGSizeMake(CGImageGetWidth(sourceImageRef) * ratio, CGImageGetHeight(sourceImageRef) * ratio);


CGContextRef context = CGBitmapContextCreate(NULL,
                                             finalImageSize.width,
                                             finalImageSize.height,
                                             CGImageGetBitsPerComponent(sourceImageRef),
                                             0,
                                             CGImageGetColorSpace(sourceImageRef),
                                             CGImageGetBitmapInfo(sourceImageRef));

//Draw our image centered vertically and horizontally in our context.
CGContextDrawImage(context, 
                   CGRectMake((finalImageSize.width-aspectFillSize.width)/2,
                              (finalImageSize.height-aspectFillSize.height)/2,
                              aspectFillSize.width,
                              aspectFillSize.height),
                   sourceImageRef);

//Start cleaning up..
CGImageRelease(sourceImageRef);

CGImageRef finalImageRef = CGBitmapContextCreateImage(context);
UIImage *finalImage = [UIImage imageWithCGImage:finalImageRef];

CGContextRelease(context);
CGImageRelease(finalImageRef);
return finalImage;
于 2012-07-02T12:55:32.697 に答える
0

ドキュメントから:

UIViewContentModeScaleToFill

必要に応じてコンテンツの縦横比を変更することで、コンテンツ自体のサイズに合わせてコンテンツをスケーリングします。

あなたは数学を行うことができます。または、特に怠け者だと感じている場合は、このハック方法があります。

于 2012-07-02T09:48:37.087 に答える