2016-03-20 26 views
0

Bu benim ikilemim. Bir QR Tarayıcı ürettim ve QR Kodunun sol üstteki renkli bölümünü daha fazla işlem için kendi görüntüsüne ayırmam gerekiyor. enter image description hereKırpma alanı Alt görünüm ile UIImage alanı

Mavi sınırlayıcı kutu self.view'in bir alt görünümüdür ve kırmızı sınırlayıcı kutu mavi sınırlayıcı kutunun alt görünümüdür. Resmi oluşturmak için AVCaptureStillImageOutput kullanıyorum; Aşağıdaki kod ..

[_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]; 
}]; 

Kimliği gerçekten günlerce ona oldum bu ile her türlü yardımı memnuniyetle ve benim fikir sonunda duyuyorum. Teşekkürler!

+0

istenilen CGRect ile UIView anlık olabilir. –

+0

@TejaNandamuri İstenen rect kırmızı kenarlı sınırlayıcı kutununkine aittir. Bunu nasıl yaparım? .. UIView'i bir ekran görüntüsü olarak nasıl görüntüleyeceğimi biliyorum .. ama geri kalanını ..? – skram

+0

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

cevap

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

Çözümünüzü örnek koduma uygulayabilir misiniz? Uygulamayı denedim ve istenen sonuçları almadım. Teşekkürler! @ 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

creopAğaç çerçevenizi çerçeveleyin, supperFotoğraf görüntü çerçevenizi çıkarın, –

İlgili konular