2012-10-07 38 views
5

Tôi đang cố triển khai chế độ xem máy ảnh iOS có hình ảnh có hình vuông (tương tự như Instagram). Mã của tôi xuất hiện bên dưới. Phần đầu tiên, nơi chiều cao khung được đặt bằng với chiều rộng khung hình, hoạt động như mong đợi và người dùng được cung cấp chế độ xem hình vuông. Vấn đề xảy ra sau khi tôi cố gắng áp dụng khung (đó là một tài sản CGRect) cho dữ liệu hình ảnh bằng cách sử dụng CGImageCreateWithImageInRect. Tôi vượt qua khung rect để phương pháp này với hình ảnh. Nhưng kết quả không được cắt thành hình vuông. Thay vào đó, hình ảnh vẫn giữ nguyên kích thước mặc định ban đầu từ máy ảnh iOS. Ai đó có thể cho tôi biết tôi đã làm gì sai không? Sự hiểu biết của tôi từ các tài liệu của Apple là CGImageCreateWithImageInRect nên chọn một khu vực hình ảnh của hình dạng Rect từ một số bắt đầu x/y phối hợp. Nhưng điều đó dường như không xảy ra.Cắt ảnh bằng CGImageCreateWithImageInRect

//Set the frame size to be square shaped 
UIView *view = imagePicker.view; 
     frame = view.frame; 
     frame.size.height = frame.size.width; 
     view.frame = frame; 

//Crop the image to the frame dimensions using CGImageCreateWithImageInRect 
-(void)imagePickerController:(UIImagePickerController *)picker 
didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    [self.popoverController dismissPopoverAnimated:true]; 

NSString *mediaType = [info 
         objectForKey:UIImagePickerControllerMediaType]; 
[self dismissModalViewControllerAnimated:YES]; 
if ([mediaType isEqualToString:(NSString *)kUTTypeImage]) { 
    UIImage *image = [info 
         objectForKey:UIImagePickerControllerOriginalImage]; 

    croppedImage = (__bridge UIImage *)(CGImageCreateWithImageInRect((__bridge CGImageRef)(image), frame)); 

    imageView.image = croppedImage; 

} 
else if ([mediaType isEqualToString:(NSString *)kUTTypeMovie]) 
{ 
    // Code here to support video if enabled 
} 
} 

Trả lời

0

Bạn đang làm đúng. Điều duy nhất là tôi nghĩ bạn đang thiết lập thuộc tính khung giống như khung nhìn bộ chọn, vì vậy kích thước cuối cùng giống với kích thước ban đầu.

Cố gắng thiết lập khung nhỏ hơn pickerView.view.frame, không bằng

Kiểm tra này ra

Cropping an UIImage

+0

tôi đã cố gắng đi qua một CGRect nhỏ tùy ý nhưng đầu ra có 0 byte dữ liệu hình ảnh. Tôi đã sử dụng CGRect rect = CGRectMake (0, 26, 50, 50) ;. Ngoài ra, mã ban đầu của tôi đặt chiều cao khung hình bằng với chiều rộng, vì vậy kích thước đó nhỏ hơn kích thước ban đầu. Về cơ bản nó là hình vuông 320x320 dựa trên kích thước của màn hình iPhone. – hughesdan

+0

có thể câu trả lời này có thể giúp http://stackoverflow.com/a/10185736/1447414 – user1447414