美文网首页糖糖的iOS专题
图片上传处理 图片压缩

图片上传处理 图片压缩

作者: 我的梦想之路 | 来源:发表于2016-06-02 17:04 被阅读273次
    > 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];
    }
    
    > 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];
    }
    //打开相机
    - (IBAction)touch_photo:(id)sender {
        // for iphone
        UIImagePickerController *pickerImage = [[UIImagePickerController alloc] init];
       if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
            pickerImage.sourceType = UIImagePickerControllerSourceTypeCamera;
            pickerImage.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:pickerImage.sourceType];
            
        }
        pickerImage.delegate =self;
        pickerImage.allowsEditing =YES;//自定义照片样式
        [self presentViewController:pickerImage animated:YES completion:nil];
    }
    
    -(void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary*)info
    {
        //初始化imageNew为从相机中获得的--
        UIImage *imageNew = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
        //设置image的尺寸
        CGSize imagesize = imageNew.size;
        imagesize.height =626;
        imagesize.width =413;
      
    
    >   //对图片大小进行压缩--
    
        imageNew = [self imageWithImage:imageNew scaledToSize:imagesize];
        NSData *imageData = UIImageJPEGRepresentation(imageNew,0.00001);
       if(m_selectImage==nil)
        {
            m_selectImage = [UIImage imageWithData:imageData];
            NSLog(@"m_selectImage:%@",m_selectImage);
            [self.TakePhotoBtn setImage:m_selectImage forState:UIControlStateNormal];
            [picker dismissModalViewControllerAnimated:YES];
           return ;
        }
        [picker release];
    }
    
    
    > //对图片尺寸进行压缩--
    
    -(UIImage*)imageWithImage:(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;
    }
    
    图片保存到本地document里面--以及图片格式的转换
    IOS开发之保存图片到Documents目录及PNG,JPEG格式相互转换
    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary*)info {
        NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
        if ([mediaType isEqualToString:@"public.image"]){
            image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
            NSData *data;
            if (UIImagePNGRepresentation(image) == nil) {
                data = UIImageJPEGRepresentation(image, 1);
            } else {
                data = UIImagePNGRepresentation(image);
            }
            
            NSFileManager *fileManager = [NSFileManager defaultManager];
            NSString *filePath = [NSString stringWithString:[self getPath:@"image1"]];         //将图片存储到本地documents
             [fileManager createDirectoryAtPath:filePath withIntermediateDirectories:YES attributes:nil error:nil];
             [fileManager createFileAtPath:[filePath stringByAppendingString:@"/image.png"] contents:dataattributes:nil];
            
            UIImage *editedImage = [[UIImage alloc] init];
            editedImage = image;
            CGRect rect = CGRectMake(0, 0, 64, 96);
            UIGraphicsBeginImageContext(rect.size);
            [editedImage drawInRect:rect];
            editedImage = UIGraphicsGetImageFromCurrentImageContext();
            
            UIButton *imageButton = [UIButton buttonWithType:UIButtonTypeCustom];
            imageButton.frame = CGRectMake(10, 10, 64, 96);
            [imageButton setImage:editedImage forState:UIControlStateNormal];
            [self.view addSubview:imageButton];
            [imageButton addTarget:self action:@selector(imageAction:)forControlEvents:UIControlEventTouchUpInside];
            [ipc dismissModalViewControllerAnimated:YES];
        } else {
            NSLog(@"MEdia");
        }
        
    //上面的代码是当从相册里面选取图片之后保存到本地程序沙盒,在上面我们得到的图片中不能够得到图片名字,
    //以及不清楚图片格式,所以这个时候我们需要将其转换成NSdata二进制存储,
     image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
    NSData *data;
            if (UIImagePNGRepresentation(image) == nil) {
                data = UIImageJPEGRepresentation(image, 1);
            } else {
                data = UIImagePNGRepresentation(image);
            }
    //UIImagePNGRepresentation转换PNG格式的图片为二进制,如果图片的格式为JPEG则返回nil;
     [fileManager createFileAtPath:[filePath stringByAppendingString:@"/image.png"] contents:data attributes:nil];    
     //将图片保存为PNG格式
     [fileManager createFileAtPath:[filePath stringByAppendingString:@"/image.jpg"] contents:data attributes:nil];   
    //将图片保存为JPEG格式
    //我们也可以写成下面的格式存储图片
    NSString *pngImage = [filePath stringByAppendingPathComponent:@"Documents/image.png"];
    NSString *jpgImage = [filePath stringByAppendingPathComponent:@"Documents/image.jpg"];
    [data writeToFile:pngImage atomically:YES];
    [data writeToFile:jpgImage atomically:YES];
    

    相关文章

      网友评论

        本文标题:图片上传处理 图片压缩

        本文链接:https://www.haomeiwen.com/subject/cnjkdttx.html