2

インポート画像[他の画像]をサーバーに送信すると、iPhoneの画像[デフォルトのカメラで写真を撮る]よりも時間がかかりません.品質を損なうことなく画像のサイズを変更するオプションはありますか?

4

2 に答える 2

3

このコードを使用すると役立ちます

+ (UIImage *)scaleImage:(UIImage *)image maxWidth:(int) maxWidth maxHeight:(int) maxHeight
{
    CGImageRef imgRef = image.CGImage;
    CGFloat width = CGImageGetWidth(imgRef);
    CGFloat height = CGImageGetHeight(imgRef);

    if (width <= maxWidth && height <= maxHeight)
    {
        return image;
    }

    CGAffineTransform transform = CGAffineTransformIdentity;
    CGRect bounds = CGRectMake(0, 0, width, height);

    if (width > maxWidth || height > maxHeight)
    {
        CGFloat ratio = width/height;

        if (ratio > 1)
        {
            bounds.size.width = maxWidth;
            bounds.size.height = bounds.size.width / ratio;
        }
        else
        {
            bounds.size.height = maxHeight;
            bounds.size.width = bounds.size.height * ratio;
        }
    }

    CGFloat scaleRatio = bounds.size.width / width;
    UIGraphicsBeginImageContext(bounds.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextScaleCTM(context, scaleRatio, -scaleRatio);
    CGContextTranslateCTM(context, 0, -height);
    CGContextConcatCTM(context, transform);
    CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(0, 0, width, height), imgRef);

    UIImage *imageCopy = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return imageCopy;

}
于 2013-01-24T07:19:11.230 に答える
2

この以下の方法を試してください...

次のように呼び出します...

 UIImage *imgBig = [self imageWithImage:yourImage scaledToSize::yourNewImageSize];

そして、この怒鳴る方法を使用してください..

-(UIImage *)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize
{

    UIGraphicsBeginImageContextWithOptions(newSize, YES, image.scale);
    [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;

}
于 2013-01-24T07:25:41.453 に答える