iOS开发中的一些图片上传压缩处理

iphone中的图片通常存放在4个地法规,相册,应用程序包,沙盒,Internet,通过这四个地方我们可以处理应用图片
相册,
iphone的相册包括摄影头交卷+用户计算机同步的部分照片,用户可以通过UIImagePickerController提供的交互对话框从相册中选择图像,但是,注意:相册中的图片机器路径,无法直接从应用程序中访问,只能用户去选择和使用相册图片
应用程序包
应用程序包可能会将图像与可执行程序,info.plist文件和其他资源一同存储,我们可以读取这些基于包的图像,并在应用程序中显示他们
沙盒
借助沙盒,我们可以把图片存储在Documents,Library,tmp文件夹中,这些文件均有可以应用程序进行读取,通过文件路径进行创建头像,。尽管沙盒外的部分从技术上说是可行的,但是apple表明这些部分不在appstore应用程序允许访问的范围之内。
  Internet
  应用程序可以通过图片的URL来访问Internet上的资源。
  使用UIImagePickerController和用户交互,我们需要实现2个协议。
  View Code
  代码如下
  #pragma mark 从用户相册获取活动图片
  - (void)pickImageFromAlbum
  {
  imagePicker = [[UIImagePickerController alloc] init];
  imagePicker.delegate = self;// 设置代理
  imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;//表示从相册中获取图片进行使用
  imagePicker.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
  imagePicker.allowsEditing = YES;//设置图片是不是可以编辑
  [self presentModalViewController:imagePicker animated:YES];//t推出图片相册
  }
 View Code
  代码如下
  #pragma mark 从摄像头获取活动图片
 - (void)pickImageFromCamera
  {
  imagePicker = [[UIImagePickerController alloc] init];
  imagePicker.delegate = self;
  imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;// 设置图片的来源为摄像头
  imagePicker.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
  imagePicker.allowsEditing = YES;//图片可以编辑
  [self presentModalViewController:imagePicker animated:YES];//推出相册
  }
  在和用户进行交互以后,用户选择好图片以后,会回调选择结束的方法,结果如下
   - (void) imagePickerController:(UIImagePickerController )picker didFinishPickingMediaWithInfo:(NSDictionary )info
  {
  UIImage *image= [info objectForKey:@”UIImagePickerControllerOriginalImage”];
  if (picker.sourceType == UIImagePickerControllerSourceTypeCamera)
  {
  // UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
  }
  theImage = [UtilMethod imageWithImageSimple:image scaledToSize:CGSizeMake(120.0, 120.0)];
  UIImage *midImage = [UtilMethod imageWithImageSimple:image scaledToSize:CGSizeMake(210.0, 210.0)];
  UIImage *bigImage = [UtilMethod imageWithImageSimple:image scaledToSize:CGSizeMake(440.0, 440.0)];
  [theImage retain];
  [self saveImage:theImage WithName:@”salesImageSmall.jpg”];
  [self saveImage:midImage WithName:@”salesImageMid.jpg”];
  [self saveImage:bigImage WithName:@”salesImageBig.jpg”];
  [self dismissModalViewControllerAnimated:YES];
  [self refreshData];
  [picker release];
  }
  在结束回调的方法中,我们对图片进行了大小的处理,为图片的上转做了准备
+ (UIImage*)imageWithImageSimple:(UIImage*)image scaledToSize:(CGSize)newSize
  {
  // Create a graphics image context
  UIGraphicsBeginImageContext(newSize);
  // Tell the old image to draw in this new context, with the desired
  // new size
  [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
  // Get the new image from the context
  UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
  // End the context
  UIGraphicsEndImageContext();
  // Return the new image.
  return newImage;
  }
存储图像,
在上面中,我们获取了图片,并进行了压缩,通过上面的小知识,我们知道,将需要的一些u 图片存入七牛是一个不错的选择,而且应用程序可以直接通过路径去方法沙盒中的图片,
View Code
  代码如下
  #pragma mark 保存图片到document
  - (void)saveImage:(UIImage )tempImage WithName:(NSString )imageName
  {
  NSData* imageData = UIImagePNGRepresentation(tempImage);
  NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
  NSString* documentsDirectory = [paths objectAtIndex:0];
  // Now we get the full path to the file
  NSString* fullPathToFile = [documentsDirectory stringByAppendingPathComponent:imageName];
  // and then we write it out
  [imageData writeToFile:fullPathToFile atomically:NO];
  }
  从Documents目录下获取图片
  要从Documents下面获取图片,我们首先需要获取Documents目录的路径。
  View Code
  代码如下
  #pragma mark 从文档目录下获取Documents路径
  - (NSString *)documentFolderPath
  {
  return [NSHomeDirectory() stringByAppendingPathComponent:@”Documents”];
  }
  然后,我们便可以通过文件名,去访问获取资源了。
  View Code
  上传图片
  项目中我们使用了ASIFormHttpRequest的开源框架,http请求的部分代码如下,http返回以及相关回调方法略去。
  View Code
  代码如下
  - (void)upLoadSalesBigImage:(NSString )bigImage MidImage:(NSString )midImage SmallImage:(NSString *)smallImage
  {
  NSURL *url = [NSURL URLWithString:UPLOAD_SERVER_URL];
  ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
  [request setPostValue:@”photo” forKey:@”type”];
  [request setFile:bigImage forKey:@”file_pic_big”];
  [request buildPostBody];
  [request setDelegate:self];
  [request setTimeOutSeconds:TIME_OUT_SECONDS];
  [request startAsynchronous];
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值