IOS 圖片上傳處理 圖片壓縮 圖片處理

xg48 9年前發布 | 1K 次閱讀 Objective-C IOS

提到從攝像頭/相冊獲取圖片是面向終端用戶的,由用戶去瀏覽并選擇圖片為程序使用。在這里,我們需要過UIImagePickerController類來和用戶交互。

使用UIImagePickerController和用戶交互,我們需要實現2個協議<UIImagePickerControllerDelegate,UINavigationControllerDelegate>。

View Code

代碼如下復制代碼

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,表明當前圖片的來源為相冊,除此之外還可以設置用戶對圖片是否可編輯。

View Code

代碼如下復制代碼

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

}

以上是從攝像頭獲取圖片,和從相冊獲取圖片只是圖片來源的設置不一樣,攝像頭圖片的來源為UIImagePickerControllerSourceTypeCamera。

    在和用戶交互之后,用戶選擇好圖片后,會回調選擇結束的方法。

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

} </pre>

 本文由用戶 xg48 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!