收藏 分享(赏)

【iphone开发】从摄像头相册获取图片,压缩图片,上传服务器小结.doc

上传人:buyk185 文档编号:6337592 上传时间:2019-04-07 格式:DOC 页数:5 大小:84.50KB
下载 相关 举报
【iphone开发】从摄像头相册获取图片,压缩图片,上传服务器小结.doc_第1页
第1页 / 共5页
【iphone开发】从摄像头相册获取图片,压缩图片,上传服务器小结.doc_第2页
第2页 / 共5页
【iphone开发】从摄像头相册获取图片,压缩图片,上传服务器小结.doc_第3页
第3页 / 共5页
【iphone开发】从摄像头相册获取图片,压缩图片,上传服务器小结.doc_第4页
第4页 / 共5页
【iphone开发】从摄像头相册获取图片,压缩图片,上传服务器小结.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、这几天在搞 iphone 上面一个应用的开发,里面有需要摄像头/相册编程和图片上传的问题,在这里总结一下。【部分知识】iphone 中图像通常存储在 4 个地方【相册、应用程序包、沙盒、Internet】,通过这 4个源,我们就可以存取应用图片。 相册 iphone 的相册包含摄像头胶卷+用户计算机同步的部分照片。用户可以通过UIImagePickerController 类提供的交互对话框来从相册中选择图像。但是,注意:相册中的图片机器路径无法直接从应用程序访问,只能通过终端用户去选择和使用相册图片 应用程序包 应用程序包可能会将图像与可执行程序、Info.plist 文件和其他资源一同存储

2、。我们可以通过本地文件路径来读取这些基于包的图像并在应用程序中显示它们。 沙盒 借助沙盒,我们可以把图片存储到 Documents、Library、tmp 文件夹中。这些文件均可有应用程序读取,且可以通过文件路径创建图像。尽管沙盒外的部分从技术上说是可行的,但是 apple 表明这些部分不在 appstore 应用程序允许访问的范围之内。 Internet 应用程序可以通过图片的 URL 来访问 Internet 上的资源。以上为一些小知识,来自iphone 开发秘籍(第二版),可以自己去参考此书。下面开始切入正题,从摄像头/相册获取图片,压缩图片,上传图片。 从摄像头/相册获取图片 刚刚在上

3、面的知识中提到从摄像头/相册获取图片是面向终端用户的,由用户去浏览并选择图片为程序使用。在这里,我们需要过 UIImagePickerController 类来和用户交互。使用 UIImagePickerController 和用户交互,我们需要实现 2 个协议。View Code http:/ #pragma mark 从用户相册获取活动图片- (void)pickImageFromAlbumimagePicker = UIImagePickerController alloc init;imagePicker.delegate = self;imagePicker.sourceType =

4、 UIImagePickerControllerSourceTypePhotoLibrary;imagePicker.modalTransitionStyle = UIModalTransitionStyleCoverVertical;imagePicker.allowsEditing = YES;self presentModalViewController:imagePicker animated:YES;我们来看看上面的从相册获取图片,我们首先要实例化UIImagePickerController 对象,然后设置 imagePicker 对象为当前对象,设置imagePicker 的图片

5、来源为 UIImagePickerControllerSourceTypePhotoLibrary,表明当前图片的来源为相册,除此之外还可以设置用户对图片是否可编辑。View Code #pragma mark 从摄像头获取活动图片- (void)pickImageFromCameraimagePicker = UIImagePickerController alloc init;imagePicker.delegate = self;imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;imagePicker.mod

6、alTransitionStyle = UIModalTransitionStyleCoverVertical;imagePicker.allowsEditing = YES;http:/ self presentModalViewController:imagePicker animated:YES;以上是从摄像头获取图片,和从相册获取图片只是图片来源的设置不一样,摄像头图片的来源为 UIImagePickerControllerSourceTypeCamera。在和用户交互之后,用户选择好图片后,会回调选择结束的方法。View Code - (void) imagePickerContro

7、ller:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)infoUIImage *image= info objectForKey:“UIImagePickerControllerOriginalImage“;if (picker.sourceType = UIImagePickerControllerSourceTypeCamera) / UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);theImage = UtilMet

8、hod 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

9、 WithName:“salesImageSmall.jpg“;self saveImage:midImage WithName:“salesImageMid.jpg“;self saveImage:bigImage WithName:“salesImageBig.jpg“;self dismissModalViewControllerAnimated:YES;self refreshData;picker release;在回调结束的方法中,我们对图片进行了大小的处理,为图片的上传做准备。 缩放图片 缩放图片比较简单,就直接放上代码,让大家参考一下。View Code /压缩图片+ (UII

10、mage*)imageWithImageSimple:(UIImage*)image scaledToSize:(CGSize)newSize/ Create a graphics image contextUIGraphicsBeginImageContext(newSize);/ Tell the old image to draw in this new context, with the desired/ new sizeimage drawInRect:CGRectMake(0,0,newSize.width,newSize.height);/ Get the new image f

11、rom the contextUIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();/ End the contextUIGraphicsEndImageContext();/ Return the new image.return newImage; 存储图像 在上面我们获取到了图片并对图片进行了压缩,通过之前的小知识了解到,将应用需要的一些图片存入沙盒是个不错的选择,而且应用程序可以直接通过路径去方法沙盒中的图片,在这里我们将图片存入沙盒中的 Documents 目录下。View Code #pragma mark

12、保存图片到 document- (void)saveImage:(UIImage *)tempImage WithName:(NSString *)imageNameNSData* imageData = UIImagePNGRepresentation(tempImage);NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);NSString* documentsDirectory = paths objectAtIndex:0;/ Now we ge

13、t the full path to the fileNSString* fullPathToFile = documentsDirectory stringByAppendingPathComponent:imageName;/ and then we write it outimageData writeToFile:fullPathToFile atomically:NO; 从 Documents 目录下获取图片 要从 Documents 下面获取图片,我们首先需要获取 Documents 目录的路径。View Code #pragma mark 从文档目录下获取 Documents 路

14、径- (NSString *)documentFolderPathreturn NSHomeDirectory() stringByAppendingPathComponent:“Documents“;然后,我们便可以通过文件名,去访问获取资源了。View Code 上传图片 项目中我们使用了 ASIFormHttpRequest 的开源框架,http 请求的部分代码如下,http 返回以及相关回调方法略去。View Code - (void)upLoadSalesBigImage:(NSString *)bigImage MidImage:(NSString *)midImage Small

15、Image:(NSString *)smallImageNSURL *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; 到现在为止,我们已经完成了从摄像头/相册获取图像、存储图像、压缩图像、上传图像。呵呵,很简单吧,由于之前在网上没有找到多少可用的,所以在此记录一下,希望给其他人一些借鉴,如果有问题,请留言,谢谢晚安

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报