获取图片

#import "XMGSeeBigPictureViewController.h"

#import <UIImageView+WebCache.h>

#import "XMGTopic.h"

#import <SVProgressHUD.h>

#import <AssetsLibrary/AssetsLibrary.h>

@interface XMGSeeBigPictureViewController () <UIScrollViewDelegate>

/** 图片 */

@property (nonatomic, weak) UIImageView *imageView;

/** 相册库 */

@property (nonatomic, strong) ALAssetsLibrary *library;

@end

@implementation XMGSeeBigPictureViewController

- (ALAssetsLibrary *)library

{

if (!_library) {

_library = [[ALAssetsLibrary alloc] init];

}

return _library;

}

- (IBAction)back {

[self dismissViewControllerAnimated:YES completion:nil];

}

- (void)viewDidLoad {

[super viewDidLoad];

// 滚动控件

UIScrollView *scrollView = [[UIScrollView alloc] init];

scrollView.frame = [UIScreen mainScreen].bounds;

scrollView.backgroundColor = [UIColor blackColor];

scrollView.delegate = self;

[self.view insertSubview:scrollView atIndex:0];

// 图片

UIImageView *imageView = [[UIImageView alloc] init];

[imageView sd_setImageWithURL:[NSURL URLWithString:self.topic.image1]];

[scrollView addSubview:imageView];

self.imageView = imageView;

// 图片的尺寸

imageView.x = 0;

imageView.width = XMGScreenW;

imageView.height = self.topic.height * imageView.width / self.topic.width;

if (imageView.height > XMGScreenH) { // 图片过长

imageView.y = 0;

scrollView.contentSize = CGSizeMake(0, imageView.height);

} else { // 图片居中显示

imageView.centerY = XMGScreenH * 0.5;

}

// 伸缩

CGFloat maxScale = self.topic.height / imageView.height;

if (maxScale > 1.0) {

scrollView.maximumZoomScale = maxScale;

}

}

static NSString * const XMGGroupNameKey = @"XMGGroupNameKey";

static NSString * const XMGDefaultGroupName = @"03期-百思不得姐";

- (NSString *)groupName

{

// 先从沙盒中取得名字

NSString *groupName = [[NSUserDefaults standardUserDefaults] stringForKey:XMGGroupNameKey];

if (groupName == nil) { // 沙盒中没有存储任何文件夹的名字

groupName = XMGDefaultGroupName;

// 存储名字到沙盒中

[[NSUserDefaults standardUserDefaults] setObject:groupName forKey:XMGGroupNameKey];

[[NSUserDefaults standardUserDefaults] synchronize];

}

return groupName;

}

- (IBAction)save

{

// 获得文件夹的名字

__block NSString *groupName = [self groupName];

// self的弱引用

XMGWeakSelf;

// 图片库

__weak ALAssetsLibrary *weakLibrary = self.library;

// 创建文件夹

[weakLibrary addAssetsGroupAlbumWithName:groupName resultBlock:^(ALAssetsGroup *group) {

if (group) { // 新创建的文件夹

// 添加图片到文件夹中

[weakSelf addImageToGroup:group];

} else { // 文件夹已经存在

[weakLibrary enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) {

NSString *name = [group valueForProperty:ALAssetsGroupPropertyName];

if ([name isEqualToString:groupName]) { // 是自己创建的文件夹

// 添加图片到文件夹中

[weakSelf addImageToGroup:group];

*stop = YES; // 停止遍历

} else if ([name isEqualToString:@"Camera Roll"]) {

// 文件夹被用户强制删除了

groupName = [groupName stringByAppendingString:@" "];

// 存储新的名字

[[NSUserDefaults standardUserDefaults] setObject:groupName forKey:XMGGroupNameKey];

[[NSUserDefaults standardUserDefaults] synchronize];

// 创建新的文件夹

[weakLibrary addAssetsGroupAlbumWithName:groupName resultBlock:^(ALAssetsGroup *group) {

// 添加图片到文件夹中

[weakSelf addImageToGroup:group];

} failureBlock:nil];

}

} failureBlock:nil];

}

} failureBlock:nil];

}

/**

* 添加一张图片到某个文件夹中

*/

- (void)addImageToGroup:(ALAssetsGroup *)group

{

__weak ALAssetsLibrary *weakLibrary = self.library;

// 需要保存的图片

CGImageRef image = self.imageView.image.CGImage;

// 添加图片到【相机胶卷】

[weakLibrary writeImageToSavedPhotosAlbum:image metadata:nil completionBlock:^(NSURL *assetURL, NSError *error) {

[weakLibrary assetForURL:assetURL resultBlock:^(ALAsset *asset) {

// 添加一张图片到自定义的文件夹中

[group addAsset:asset];

[SVProgressHUD showSuccessWithStatus:@"保存成功!"];

} failureBlock:nil];

}];

}

- (void)getAllPhotos

{

ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];

// 遍历所有的文件夹, 一个ALAssetsGroup对象就代表一个文件夹

[library enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) {

// 遍历文件夹内的所有多媒体文件(图片、视频), 一个ALAsset对象就代表一张图片

[group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {

// 缩略图

XMGLog(@"%@", [UIImage imageWithCGImage:result.thumbnail]);

// 获得原始图片

//            XMGLog(@"%@", [UIImage imageWithCGImage:result.defaultRepresentation.fullResolutionImage]);

}];

} failureBlock:nil];

}

// 自定义照相机 : AVCaptureSession <AVFoundation/AVFoundation.h>

// 通过拍照获得一张图片

//    UIImagePickerController *picker = [[UIImagePickerController alloc] init];

//    picker.sourceType = UIImagePickerControllerSourceTypeCamera;

//    [self presentViewController:picker animated:YES completion:nil];

// 从相册中挑选一张图片

//    UIImagePickerController *picker = [[UIImagePickerController alloc] init];

//    picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;

//    [self presentViewController:picker animated:YES completion:nil];

#pragma mark - <UIScrollViewDelegate>

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView

{

return self.imageView;

}

@end

时间: 2024-11-06 20:59:55

获取图片的相关文章

JS获取图片的缩略图,并且动态的加载多张图片

找了好多资料也没有找到该死的ie的解决办法,最后放弃了ie <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>js获取缩略图</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <st

怎样从server获取图片

今天写了安卓程序与server通信.当中须要从server获取图片.本来以为下载流.处理文件流非常复杂.结果几句话就轻松搞定了.如今记在这里. // (2014.5.1第一种方法)通过server返回的图片url,再次向server请求,加入动态新闻图片 // 读取Bitmap图片 try { Bitmap bm; URL url; url = new URL(map.get("activityPhoto").toString()); HttpURLConnection conn =

UIImagePickerController从拍照、图库、相册获取图片

iOS 获取图片有三种方法: 1. 直接调用摄像头拍照 2. 从相册中选择 3. 从图库中选择 UIImagePickerController 是系统提供的用来获取图片和视频的接口: 用UIImagePickerController 类来获取图片视频,大体分为以下几个步骤: 1. 初始化UIImagePickerController 类: 2. 设置UIImagePickerController 实例的数据来源类型(下面解释): 3. 设置设置代理: 4. 如果需要做图片修改的话设置allows

如何通过js和jquery获取图片真实的宽度和高度

在做pc网页的时候,有时候会考虑按照插入的图片的尺寸来判断图片是横图还是竖图.然后判断过后给予不同的展示方式! 另外一种就是在手机页面上,在新闻页插入的图片往往都是按照图片的原尺寸来展示,如果手机屏幕太小,太大的图就会超出去!这时候有两种解决办法 1.给所有的图片加上这样的样式 .news img{margin:5px auto; display:block;width:100%; height:auto;} 但是这种方式有另外一个问题就是,如果插入的图片本身就很小的话,也会被直接拉伸成100%

Android图片系列(1)-------调用系统相册与相机获取图片

Android开发过程中,我们经常需要获取图片,你可以通过获取手机相册的图片,也可以调用相机拍照获取图片.这里主要讲这两个获取图片的方式,并记录其中遇到的小问题. 调用相册获取图片 这个功能非常简单,这里不多说了,这里贴出关键代码 Intent openAlbumIntent = new Intent(Intent.ACTION_GET_CONTENT); openAlbumIntent.setType("image/*"); startActivityForResult(openAl

android获取图片的旋转角度

public static int getExifOrientation(String filepath) { int degree = 0; ExifInterface exif = null; try { exif = new ExifInterface(filepath); } catch (IOException ex) { Log.d(TAG, "cannot read exif" + ex); } if (exif != null) { int orientation =

添加资源图片,获取图片实例并绘制到窗体

项目右键属性——资源——添加资源展开——添加现有文件 paint方法中: private void Form1_Paint(object sender, PaintEventArgs e) { using (Graphics g = e.Graphics) { g.DrawImage((Image)zhbImgConvert.Properties.Resources.ResourceManager.GetObject("_001"), 10, 70); } } 添加资源图片,获取图片实

积跬步,聚小流------java获取图片的尺寸

在一篇文章中获取到通过例如以下两种方式进行获取: 1.使用ImageReader进行获取: 2.使用BufferedImage进行获取: 而且经过验证ImageReader进行操作的耗时远远低于BufferedImage操作的耗时,详情可查看链接查看原文 然后依据应用我自己在项目中略做修改,在这里记录下: <span style="font-size:14px;">package com.jzba.utils; import java.awt.image.BufferedI

JavaScript获取图片的原始尺寸

页面里的img元素,想要获取它的原始尺寸,以宽度为例可能首先想到的就是width,如下 1 2 3 4 5 <img src=" http://img11.360buyimg.com/da/g14/M07/01/0E/rBEhVlNhh8wIAAAAAADmFBLo1twAAM26gOmCgYAAOYs716.jpg"> <script> var img = document.getElementsByTagName('img')[0] var width =

imagick获取图片的大小bug

<? php /* imagick的获取图片的高度和宽度函数有问题,使用GD函数可获得正确结果 gd函数 array getimagesize ( string $filename [, array &$imageinfo ] ) getimagesize() 函数将測定不论什么 GIF,JPG,PNG,SWF.SWC.PSD.TIFF,BMP,IFF.JP2,JPX.JB2.JPC,XBM 或 WBMP 图像文件的大小并返回图像的尺寸以及文件类型和一个能够用于普通 HTML 文件里 IMG