我目前正在使用iOS上的Imgur上传一张图片到服务器,代码如下:
NSData* imageData = UIImagePNGRepresentation(image);
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString* fullPathToFile = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"SBTempImage.png"];
[imageData writeToFile:fullPathToFile atomically:NO];
[uploadRequest setFile:fullPathToFile forKey:@"image"];
当在模拟器中运行并从模拟器的图片库上传文件时,代码工作得很好,因为我使用的是快速以太网连接。但是,当选择使用iPhone拍摄的图像时,iPhone上的相同代码会超时。所以,我试着从网上保存了一张小图片,并尝试上传,效果很好。
这让我相信iPhone拍摄的大图在速度有点慢的3G网络上超时了。有没有办法在发送之前从iPhone中压缩/调整图像的大小?
发布于 2010-12-09 11:26:11
您应该能够通过执行以下操作来制作较小的图像
UIImage *small = [UIImage imageWithCGImage:original.CGImage scale:0.25 orientation:original.imageOrientation];
(对于四分之一大小的图像),然后将较小的图像转换为PNG或您需要的任何格式。
发布于 2010-12-17 17:46:02
此代码段将调整图像的大小:
UIGraphicsBeginImageContext(newSize);
[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
变量newSize
是一个CGSize
,可以这样定义:
CGSize newSize = CGSizeMake(100.0f, 100.0f);
发布于 2013-12-27 05:23:14
一个独立的解决方案:
- (UIImage *)compressForUpload:(UIImage *)original scale:(CGFloat)scale
{
// Calculate new size given scale factor.
CGSize originalSize = original.size;
CGSize newSize = CGSizeMake(originalSize.width * scale, originalSize.height * scale);
// Scale the original image to match the new size.
UIGraphicsBeginImageContext(newSize);
[original drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *compressedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return compressedImage;
}
感谢@Tuan Nguyen。
https://stackoverflow.com/questions/4394491
复制相似问题