2012-08-06 30 views
5

Trong ứng dụng của tôi, tôi có chức năng 'Chụp từ Máy ảnh', tôi đang sử dụng GPUImageFramework của Brad Larson (ty), GPUImageStillCamera khi chụp ảnh tĩnh.Làm thế nào tôi có thể tính toán kích thước cắt (rect) của UIImage với độ phân giải khác nhau

stillCamera = [[GPUImageStillCamera alloc] initWithSessionPreset:AVCaptureSessionPresetPhoto cameraPosition: 
       AVCaptureDevicePositionBack]; 

như bạn có thể thấy. cài đặt phiên là AVCaptureSessionPresetPhoto mà trong iPhone 4 cho tôi đầu ra 1529x2048 và với thiết bị 4s (8mp) mang lại cho tôi 2448x3264.

hình ảnh bên dưới là cách tôi sử dụng GPUStillCamera. ở đây, có hình chữ nhật trong trường hợp này, hình ảnh cắt trực tiếp của ảnh đã chụp.

Still camera output

đoạn mã khi tôi chụp ảnh.

- (IBAction)takePhoto:(id)sender 
{ 
     [stillCamera capturePhotoAsJPEGProcessedUpToFilter:filter withCompletionHandler:^(NSData *processedJPEG, NSError *error){ 

     //1529x2048 when iPhone 4 and 2448x3265 when on 4s 
     UIImage *rawImage = [[UIImage alloc]initWithCGImage:[[UIImage imageWithData:processedJPEG]CGImage]scale:1.0 orientation:UIImageOrientationUp]; 

     **CGRect rect = CGRect{?,?,?,?};** 
     UIImage *imageFromRect = [rawImage imageAtRect:rect ]; 
} 

Câu hỏi của tôi ở đây là. Làm thế nào tôi có thể biết các điểm (x, y, w, h) mà tôi có thể chuyển sang phương thức imageAtRect để vẽ hình ảnh con từ rawImage? và sẽ chỉ nhận được phần hình ảnh trong hình chữ nhật (bất kể độ phân giải của hình ảnh được chụp) như được hiển thị trong màn hình ở trên? tôi có nên làm điều đó một cách thủ công hoặc có bất kỳ kỹ thuật toán học nào mà bạn có thể đề xuất không?

Cảm ơn!

+1

Nếu bạn đang sử dụng GPUImage, hãy xem GPUImageCropFilter. Nó sẽ cắt bằng cách sử dụng không gian tọa độ hình ảnh với một giá trị khác nhau, từ 0,0 đến 1,0, tức là: không phân biệt kích thước hình ảnh –

+0

Paul làm cho một điểm tốt. GPUImageCropFilter sử dụng hệ tọa độ chuẩn hóa, do đó, nó cắt một hình chữ nhật độc lập với độ phân giải của ảnh đầu vào và xử lý tính toán độ phân giải cho đầu ra cho bạn. –

+1

Tôi đã xem xét nó và có nó hoạt động như các bạn chỉ nói ở đây :) cảm ơn. – janusbalatbat

Trả lời

0

Bạn có thể sử dụng lớp cắt hình ảnh này và tệp libray và bạn có thể nhận được kích thước và vị trí xuất xứ và cắt của UIImage bị cắt.

http://code4app.net/ios/Custom-image-cropper/51e5f03f6803fac530000000

Plus nếu bạn muốn nó có thể có thể tự động thay đổi kích thước của hình ảnh cắt xén cho phù hợp. Dễ sử dụng và thực hiện. Hãy nhìn vào hướng dẫn một lần.

Các vấn đề liên quan