新浪微博客户端(39)-从图库或相机中选择图片

DJComposeViewController.m

#pragma mark - DJComposeToolbar 代理方法
- (void)composeToolbar:(DJComposeToolbar *)toolbar didClickBtnType:(DJComposeToolbarBtnType)btnType {

    switch (btnType) {
        case DJComposeToolbarBtnTypeCamera:
            [self openCameraSurface];
            break;
        case DJComposeToolbarBtnTypePicture:
            [self openPhotoLibrary];
            break;
        case DJComposeToolbarBtnTypeMention:
            DJLog(@"@");
            break;
        case DJComposeToolbarBtnTypeTrend:
            DJLog(@"#");
            break;
        case DJComposeToolbarBtnTypeEmotion:
            DJLog(@"Emoji");
            break;
        default:
            break;
    }

}

#pragma mark - UIImagePickerController 代理方法

/** 当用户拍照完成或从图库中选择完毕后调用此方法 */
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)intent {

//    NSLog(@"%@",intent);
    UIImage *image = intent[UIImagePickerControllerOriginalImage];
    [self.photosView addPhoto:image];

    [picker dismissViewControllerAnimated:YES completion:nil];

}

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {

    DJLog(@"用户取消了选择");
    [picker dismissViewControllerAnimated:YES completion:nil];

}

#pragma mark - 打开相机拍摄界面或相机图库

/** 打开相机图库 */
- (void)openPhotoLibrary {

    // 首先判断当前图库选项是否可用
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {

        UIImagePickerController *ipc = [[UIImagePickerController alloc] init];
        ipc.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
        ipc.delegate = self;
        [self presentViewController:ipc animated:YES completion:nil];

    }

}

- (void)openCameraSurface {

    // 判断当前相机系统是否可用
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {

        UIImagePickerController *ipc = [[UIImagePickerController alloc] init];
        ipc.sourceType = UIImagePickerControllerSourceTypeCamera;
        [self presentViewController:ipc animated:YES completion:nil];

    }

}

- (void)dealloc {

    [[NSNotificationCenter defaultCenter] removeObserver:self];

}

DJComposePhotosView.h

#import <UIKit/UIKit.h>

// 相册的最大列数
#define DJComposePhotosViewMaxColumns 3
// 相册中的图片间距
#define DJComposePhotosViewMargin 4
// 相册图片的宽高
#define DJComposePhotoWH ((DJContentWidth - (DJComposePhotosViewMaxColumns - 1) * DJComposePhotosViewMargin) / DJComposePhotosViewMaxColumns)
// 相册的高度(最多9张图片)
#define DJComposePhotosViewH (DJComposePhotoWH * DJComposePhotosViewMaxColumns + DJComposePhotosViewMargin * 2)

@interface DJComposePhotosView : UIView

- (void)addPhoto:(UIImage *)photo;

@end

DJComposePhotosView.m

#import "DJComposePhotosView.h"

@implementation DJComposePhotosView

// 每添加一个UIImage,就把它当做一个imageView 添加到photsView中
- (void)addPhoto:(UIImage *)photo {

    UIImageView *imageView = [[UIImageView alloc] init];
    imageView.image = photo;
    imageView.contentMode = UIViewContentModeScaleAspectFill;
    imageView.clipsToBounds = YES;
    [self addSubview:imageView];

}

- (void)layoutSubviews {

    [super layoutSubviews];

    NSUInteger count = self.subviews.count;

    for (int i = 0; i < count; i++) {
        UIImageView *imageView = self.subviews[i];
        imageView.width = DJComposePhotoWH;
        imageView.height = DJComposePhotoWH;

        int cols = i % DJComposePhotosViewMaxColumns;
        imageView.x = cols * (DJComposePhotoWH + DJComposePhotosViewMargin);

        int rows = i / DJComposePhotosViewMaxColumns;
        imageView.y = rows * (DJComposePhotoWH + DJComposePhotosViewMargin);

    }

}

@end

最终效果:

时间: 2024-10-29 19:08:46

新浪微博客户端(39)-从图库或相机中选择图片的相关文章

Android 如何从系统图库中选择图片

这几天我都在做Android的App,同时学习它的API,我将分享一些我学到的东西,比如: 如何从系统图库中选择图片. 首先,让我们来看看如何将手机系统图库集成到你的App中,然后再从图库中选择图片来做一些事.例如,在Facebook的App,你就可以直接选择手机上的图片上传到你的个人资料. 让我们来做一个简单例子,要求: 屏幕上显示一个按钮和图片视图控件. 点击"载入图片"按钮,将用户重定向到Android的图片库,在那里可以选择一个图片. 一旦图片被选中,图片将在主屏幕上的图片视图

android开发——从相冊中选择图片不裁剪

转载请注明出处:http://blog.csdn.net/zhoubin1992/article/details/46864777 问题: 在郭神的第一行代码中,第8章的从相冊中选择图片这块,从相冊选一张裁剪后显示到屏幕.可是执行后会发现从相冊选了图片后.没有弹出裁剪的界面,直接返回. 方案: 查找原因时,发现SD卡路径下的output_image.jpg是一个0字节文件.所以 这张图片没有生成.然后我认为是向系统发送选择照片的意图出了问题.我好奇的查看了下系统的图库应用(gallery)源代码

android 从相册中选择图片并判断图片是否旋转

今天在做图片合成时,首先从相册中选择图片,然后判断该图片是否旋转了,今天就讲下图片是否旋转,直接上代码 /** * 读取照片exif信息中的旋转角度 * * @param path * 照片路径 * @return角度 获取从相册中选中图片的角度 */ public static int readPictureDegree(String path) { if (TextUtils.isEmpty(path)) { return 0; } int degree = 0; try { ExifInt

从相册中选择图片进行压缩并用ImageView展示出来

从手机中选择照片这是几乎所有应用的功能之一,主要考虑到一点的就是如果图片太大了,可能会OOM,简单的处理就是对图片进行压缩! <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" and

第三讲 ------- 从系统中选择图片(拍照或从相册中取)

从系统中取图片这个是写安卓非常常见的一个功能,但是很多时候我们每次我们都去写一个还是比较麻烦的. 下面我就介绍我写的一个已经封装好的一个类,先看截图 从截图上看,功能很清晰,点击获取图片按钮,出来一个半透明的界面,具有用相机拍照获取图片和从相册中选择两种途径去获取图片. 看完截图直接上代码 package com.yixuan; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutput

调用相机,选择图片上传,带预览功能、图片压缩、相机文字设置、

摘要 iOS调用相机,iOS调用相册,保存至应用程序沙盒,高保真压缩图片,并有点击放大预览,再次点击缩回至原大小,带动画效果,附源码下载地址. Xcode版本4.5.1 类库ios6.0 IOS调用相机 图片预览 图片上传 压缩图片 模拟器添加图片 目录[-] 判断是否支持相机,跳转到相机或相册界面 七.保存图片 高保真压缩图片方法 八.实现点击图片预览功能,滑动放大缩小,带动画 ps:模拟器添加图片 源码下载地址: 一.新建工程 二.拖控件,创建映射 三.在.h中加入delegate ? 1

iOS UIPickerController 调用相机,选择图片上传,带预览功能

在.h中加入delegate @interface ViewController : UIViewController<UIActionSheetDelegate,UIImagePickerControllerDelegate,UINavigationControllerDelegate> //实现按钮事件 -(IBAction)chooseImage:(id)sender { UIActionSheet *sheet; <p> // 判断是否支持相机 </p> if(

iOS学习:调用相机,选择图片上传,带预览功能

一.新建工程 <ignore_js_op> 二.拖控件,创建映射 <ignore_js_op> 三.在.h中加入delegate @interface ViewController : UIViewController 复制代码 四.实现按钮事件 -(IBAction)chooseImage:(id)sender { UIActionSheet *sheet; // 判断是否支持相机 if([UIImagePickerController isSourceTypeAvailable

swift -从相册中选择照片并上传

选择本地图片并上传是应用开发中一个比较常见的功能.     原文出自:www.hangge.com  转载请保留原文链接:http://www.hangge.com/blog/cache/detail_1174.html 我们使用 UIImagePickerController 可以很方便的从系统"照片"中选择图片,但我们会发现选择完毕后,通过图片的 info[UIImagePickerControllerReferenceURL] 得到的是一个引用路径,格式如下: 1 assets-