2016-03-20 14 views
0

Dies ist mein Dilemma. Ich habe einen QR-Scanner gebaut und muss den oberen linken farbigen Teil des QR-Codes für die weitere Verarbeitung in sein eigenes Bild schneiden. enter image description hereCrop Bereich von UIImage mit Subview Rect

Die blaue Bounding Box ist eine Unteransicht von self.view und die rote Bounding Box ist eine Unteransicht der blauen Bounding Box. Ich verwende AVCaptureStillImageOutput, um das Bild zu erzeugen; Code unten ..

[_imageOutput captureStillImageAsynchronouslyFromConnection:videoConnection completionHandler: ^(CMSampleBufferRef imageSampleBuffer, NSError *error) { 

    NSData *jpegData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageSampleBuffer]; 
    UIImage *takenImage = [UIImage imageWithData:jpegData]; 

    //crop and process takenImage 
    // tried utilizing convertRect:toView: and crop result is completely wrong. 
    CGRect redFrame = [_colorBox convertRect:_colorBox.bounds toView:self.view]; 
}]; 

Id wirklich zu schätzen jede Hilfe bei dieser, wie ich habe tagt es gewesen, und sind mit meinem Latein am Ende. Vielen Dank!

+0

Sie die uiview mit dem gewünschten CGRect Snapshot kann. –

+0

@TejaNandamuri Gewünschte Rect, die der rot umrandeten Bounding Box ist. Wie würde ich darüber gehen? .. Ich weiß, wie man die UIView in ein Bild als Screenshot verwandelt ... aber der Rest ..? – skram

+0

http://stackoverflow.com/questions/2214957/how-do-i-take-a-screen-shot-of-a-uiview @skram –

Antwort

0
CGSize screenS = supperFrame.size; 

CGFloat delX = image.size.width/screenS.width; 
CGFloat delY = image.size.height/screenS.height; 

CGRect sourceRect = CGRectMake(frame.origin.x * delX, frame.origin.y * delY, frame.size.width * delX, frame.size.height * delY); 
CGImageRef imageRef = CGImageCreateWithImageInRect(image.CGImage, sourceRect); 


UIImage *cropImage = [UIImage imageWithCGImage:imageRef]; 
CGImageRelease(imageRef); 
return cropImage; 
+0

Können Sie Ihre Lösung auf meinen Beispielcode anwenden? Ich habe versucht, es zu implementieren und bekomme nicht die gewünschten Ergebnisse. Vielen Dank! @ khoren-asatryan – skram

0
- (UIImage *)imageAtFrameImage:(UIImage *)image creopFrame:(CGRect)creopFrame supperFrame:(CGRect)supperFrame { 

    CGSize screenS = supperFrame.size; 

    CGFloat delX = image.size.width/screenS.width; 
    CGFloat delY = image.size.height/screenS.height; 

    CGRect sourceRect = CGRectMake(creopFrame.origin.x * delX, creopFrame.origin.y * delY, creopFrame.size.width * delX, creopFrame.size.height * delY); 
    CGImageRef imageRef = CGImageCreateWithImageInRect(image.CGImage, sourceRect); 


    UIImage *cropImage = [UIImage imageWithCGImage:imageRef]; 
    CGImageRelease(imageRef); 
    return cropImage; 
} 
+0

creopFrame dein cub frame, supperFrame deine Bildansicht Frame, –

Verwandte Themen