objective-c - iOS imageWithData 调整大小为 640 x 480

标签 objective-c ios uiimage

我编写了一个 iOS 方法来将所选图像上传到网络服务器:

NSData *imageData = UIImagePNGRepresentation(imageView.image);
NSString *urlString = @"http://awebserversomewher.com/upload.php";

NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"POST"];

NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"];
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
[request addValue:contentType forHTTPHeaderField:@"Content-Type"];

NSMutableData *body = [NSMutableData data];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"userfile\"; filename=\".png\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:imageData]];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPBody:body];

NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];

NSLog(@"%@",returnString);

在提交此图像之前,我想调整它的大小,以便更轻松、更快地上传,有人可以告诉我如何操作吗?

谢谢

贾斯汀

最佳答案

这里有一种方法可以让你最终得到你想要的任何尺寸(不一定保持比例,这是一个优点和缺点):

UIImage *UIImageResize(UIImage *image, CGSize targetSize)
{
    UIGraphicsBeginImageContext(targetSize);
    CGContextRef bitmapContext = UIGraphicsGetCurrentContext();

    CGContextScaleCTM(bitmapContext, 1, -1);
    CGContextDrawImage(bitmapContext, (CGRect) { .origin.y = -targetSize.height, .size = targetSize }, image.CGImage);

    UIImage *results = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return results;
}

使用示例:

UIImage *resizedImage = UIImageResize([UIImage imageNamed:@"NukeBusters.png"], CGSizeMake(125, 130));
imageView.image = resizedImage;

关于objective-c - iOS imageWithData 调整大小为 640 x 480,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11122848/

相关文章:

iphone - 在 iPhone 上强制更改 UIInterfaceOrientation

ios - FOR 命令中的表达式 (for (int i=0; i < ([arr count]-1);i++){})

objective-c - 如何反转 NSString 中的字母大写(Objective-C)

ios - CLGeocoder 曾经返回一个地标

ios - 粘贴到 UITextField 时去除空格?

javascript - Web“复制到剪贴板”而不触发移动键盘

ios - Swift - 屏幕更新后 - UIView 到 UIImage 的转换

objective-c - 在带有ARC的Objective-C中,我们通常只需要指定nonatomic作为property属性是真的吗?

iphone - 如何制作从 UIImagePickerController 返回的 UIImage 的精确副本?

ios - 为什么当我按下 AnnotationView 时图像有时会消失?