图片,相册

图片,相册

iphone中图像通常存储在4个地方【相册、应用程序包、沙盒、Internet】,通过这4个源,我们就可以存取应用图片。

  相册

  iphone的相册包含摄像头胶卷+用户计算机同步的部分照片。用户可以通过UIImagePickerController类提供的交互对话框来从相册中选择图像。但是,注意:相册中的图片机器路径无法直接从应用程序访问,只能通过终端用户去选择和使用相册图片

  应用程序包

  应用程序包可能会将图像与可执行程序、Info.plist文件和其他资源一同存储。我们可以通过本地文件路径来读取这些基于包的图像并在应用程序中显示它们。

  沙盒

  借助沙盒,我们可以把图片存储到Documents、Library、tmp文件夹中。这些文件均可有应用程序读取,且可以通过文件路径创建图像。尽管沙盒外的部分从技术上说是可行的,但是apple表明这些部分不在appstore应用程序允许访问的范围之内。

  Internet

  应用程序可以通过图片的URL来访问Internet上的资源。

  从摄像头/相册获取图片,压缩图片,上传图片

  从摄像头/相册获取图片

  刚刚在上面的知识中提到从摄像头/相册获取图片是面向终端用户的,由用户去浏览并选择图片为程序使用。在这里,我们需要过UIImagePickerController类来和用户交互。

  使用UIImagePickerController和用户交互,我们需要实现2个协议。

#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];

}

  我们来看看上面的从相册获取图片,我们首先要实例化UIImagePickerController对象,然后设置imagePicker对象为当前 对象,设置imagePicker的图片来源为UIImagePickerControllerSourceTypePhotoLibrary,表明当前 图片的来源为相册,除此之外还可以设置用户对图片是否可编辑。

#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];

}

  以上是从摄像头获取图片,和从相册获取图片只是图片来源的设置不一样,摄像头图片的来源为UIImagePickerControllerSourceTypeCamera。

  在和用户交互之后,用户选择好图片后,会回调选择结束的方法。

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

}

  存储图像

  在上面我们获取到了图片并对图片进行了压缩,通过之前的小知识了解到,将应用需要的一些图片存入沙盒是个不错的选择,而且应用程序可以直接通过路径去方法沙盒中的图片,在这里我们将图片存入沙盒中的Documents目录下。

#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目录的路径。

#pragma mark 从文档目录下获取Documents路径
- (NSString *)documentFolderPath
{

  return [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];

}

  然后,我们便可以通过文件名,去访问获取资源了。

  上传图片

  项目中我们使用了ASIFormHttpRequest的开源框架,http请求的部分代码如下,http返回以及相关回调方法略去。

- (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];

}
时间: 2024-10-19 08:30:02

图片,相册的相关文章

一款实用的viewer.js 图片相册

Viewer.js 是一款强大的图片相册插件,像SNS交友网站一般都会用到点击缩略图,弹出层大图片,而且弹出层有多个控制按钮,比如放大缩小.旋转.撤回等,底部有缩略图列表可切换. 支持移动设备触摸事件支持响应式支持放大/缩小支持旋转(类似微博的图片旋转)支持水平/垂直翻转支持图片移动支持键盘支持全屏幻灯片模式(可做屏保)支持缩略图支持标题显示支持多种自定义事件 在线实例 默认效果 jQuery版本 回调函数 自定义方法 使用方法 <ul id="sucaihuo">    

CSS3学习总结——实现瀑布流布局与无限加载图片相册

首先给大家看一下瀑布流布局与无限加载图片相册效果图: 一.pic1.html页面代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>瀑布流布局与无限加载图片相册</title> <style type="text/css"> * { margin: 0; padding: 0; } body { back

基于jQuery向下弹出遮罩图片相册

今天给大家分享一款基于jQuery向下弹出遮罩图片相册.单击相册图片时,一个遮罩层从上到下动画出现.然后弹出显示图片.这款插件适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗. 在线预览   源码下载 实现的代码. html代码: <center> <h1> 点击图片查看效果</h1> </center> <br> <br> <div id='container'>

JS框架_(JQuery.js)图片相册掀开切换效果

图片掀开切换效果: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv=&quo

自定义图片相册

1.开源框架   Image-Cache-master  通用Uri来指定 是否本地和网络文件  http:///  file:/// 2.类似ContentResolver.SCHEME_ANDROID_RESOURCE + "://"+r.getResourcePackageName(R.drawable.icon_photograph)+"/"+r.getResourceTypeName(R.drawable.icon_photograph) + "

实际开发常用的jquey事件类型,并运用到图片相册

鼠标事件 .click  鼠标单击 .dblclick  鼠标双击 // 单击事件 $("a").click(function(){ $("img").eq($(this).index()) // 获取当前点击的a的index .css({"opacity":"1"}) .siblings() .css({"opacity":"0"}); }); // 双击事件 $("a&qu

1.图片-相册

? baguetteBox    Simple and easy to use lightbox script written in pure JavaScript https://feimosi.github.io/baguetteBox.js/ Cloud Zoom    a super-smooth, touch-enabled jQuery image zoom plugin used on many high profile retail sites 官网:http://www.sta

html5 图片相册

<script type="text/javascript"> var content = $(".content"); var winW = $(window).width(); var winH = $(window).height(); //div box 宽高 content.css({ width:winW, height:winH, margin:"0 auto" }); var ul = $(".ul-box&

个人界面 &lt; 头像 &gt; 图片选择(相册,拍照)--如何调用系统的相册,裁剪并且上传

##需求:个人界面的,个人头像图片的切换 方式一:点击开始切换头像的pop–相册选择 二:这里有两种方式,从相册选择和直接拍照,假设现在是从相册选择选择头像 *我在pop确定的点击方法中写了一个方法-–实现打开系统的相册并且获取到照片路径,在这里我们一开始就设置了请求码,用来区分onActivityResult,然后在本Activity中通过onActivityResult方法中通过请求码做相对应的处理 第一步:打开系统的相册 /** * 从相册获取 */ protected void toAl

Android拍照,相册选择图片以及Android6.0权限管理

概述 在android开发过程中,拍照或者从相册中选择图片是很常见的功能.下面要说得这个案例比较简单,用户点击按钮选择拍照或者打开相册选择图片,然后将选中的图片显示在手机上.android6.0后,推出了动态权限管理.以往我们将涉及到的权限全部写在清单文件中,只要用户安装了该程序,程序在运行过程中都会获得相应权限.android6.0后,对于一些特别敏感的权限,开发者必须在程序中进行声明.拍照和从相册选择图片都是涉及到用户隐私的敏感权限,必须在程序中进行声明. 大概的流程 创建布局文件,这里不多