2012-06-20 29 views
2

我有一个iOS的方法写一个选择的图像从而上传到网络服务器:此图片是提交的iOS imageWithData调整为640 x 480

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); 

之前,但是我想调整它,使其更容易更快上传可以告诉我怎么做?

感谢

贾斯汀

+0

您应该在发布问题前尝试搜索答案。 [这里...] [1] [1]:http://stackoverflow.com/questions/4394491/how-to-compress-resize-image-on-iphone-os-sdk-before -uploading-to-a-server –

回答

2
UIImage *small = [UIImage imageWithCGImage:original.CGImage scale:scale orientation:original.imageOrientation]; 

如果你想为图像定义大小的预只是自己计算比例。

例如,如果你想限制宽度然后做

scale = desiredWidth/imageWidth 

如果你想限制都那么

scale1 = desiredWidth/imageWidth 
scale2 = desiredHeight/imageHeight 
scale = min (scale1 , scale2) 
3

下面是一个方法,你可以做到这一点与任何大小结束你想(不一定保持规模,这是一个专业和一个骗局):

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; 
+0

谢谢!此方法将给定图像的大小调整为targetSize :) – iOSAppDev

相关问题