2012-05-04 13 views
0

を投げる私はAVFoundationからつかんだイメージがあります。保存CIImageは、CGImageに変換することによって、エラー

[stillImage captureStillImageAsynchronouslyFromConnection:videoConnection completionHandler:^(CMSampleBufferRef imageSampleBuffer, NSError *error) { 
    NSLog(@"image capture"); 

    NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageSampleBuffer]; 
    UIImage *image = [[UIImage alloc] initWithData:imageData]; 

を私が最初CIImageに変換することによって、この画像をトリミングしています:

beginImage = [CIImage imageWithCVPixelBuffer:CMSampleBufferGetImageBuffer(imageSampleBuffer) options:[NSDictionary dictionaryWithObjectsAndKeys:[NSNull null], kCIImageColorSpace, nil]]; 

    //first we crop to a square 
    crop = [CIFilter filterWithName:@"CICrop"]; 
    [crop setValue:[CIVector vectorWithX:0 Y:0 Z:70 W:70] forKey:@"inputRectangle"]; 
    [crop setValue:beginImage forKey:@"inputImage"]; 
    croppedColourImage = [crop valueForKey:@"outputImage"]; 

私はその後、私はそれを保存することができるようにCGImageにこのバックを変換しようとしている:

CGImageRef cropColourImage = [context createCGImage:croppedColourImage fromRect:[croppedColourImage extent]]; 
    UIImage *cropSaveImage = [UIImage imageWithCGImage:cropColourImage]; 


    //saving of the images 
    ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; 

    [library writeImageToSavedPhotosAlbum:[cropSaveImage CGImage] orientation:(ALAssetOrientation)[image imageOrientation] completionBlock:^(NSURL *assetURL, NSError *error){ 
    if (error) { 
     NSLog(@"ERROR in image save :%@", error); 
    } else 
    { 
     NSLog(@"SUCCESS in image save"); 
    } 

    }]; 

しかし、これはスローエラーは:

ERROR in image save :Error Domain=ALAssetsLibraryErrorDomain Code=-3304 "Failed to encode image for saved photos." UserInfo=0x19fbd0 {NSUnderlyingError=0x18efa0 "Failed to encode image for saved photos.", NSLocalizedDescription=Failed to encode image for saved photos.}

私はイメージが0x0のピクセルだった場合、これが発生する可能性があること、およびCGImageへCIImageからの変換が問題を引き起こす可能性があることを他の場所で読みました。何か案は?

ありがとうございます。

+0

私は保存しようとしている画像に寸法がなく、幅と高さがヌルであると思われるためです。 "2012-05-06 14:39:22.886 zApp [5108:707]保存される画像の幅が(null) 2012-05-06 14:39:22.890 zApp [5108:707]保存される画像の高さが:(null) " – mrEmpty

+0

NSLogコードにエラーがあり、保存しようとしている画像が0x0ピクセルであることを確認できます。だから私は問題だと思うが、何が起こっているのか分からない。 – mrEmpty

答えて

1

私はそれを働かせました(バトルフィールド3の20分は私に時間を与えました - どのPS3 BF3プレーヤーが私にメッセージを送るか思い出します)。

NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageSampleBuffer]; 
UIImage *image = [[UIImage alloc] initWithData:imageData]; 
NSLog(@"*image size is: %@", NSStringFromCGSize(image.size)); 

//test creating a new ciimage 
CIImage *ciImage = [[CIImage alloc] initWithCGImage:[image CGImage]]; 
NSLog(@"ciImage extent: %@", NSStringFromCGRect([ciImage extent])); 

これは私に使用可能なCIImageを与える:私は何

を持つすべての私のタフィーコードを交換です。

多くのコメントされた行を無視してください、これらは私のテストでした。彼らは今取り除かれることができます。

私は近づいて庭に近づいて幸せです。

+0

cropColourImageがエラーでなぜ解放されないのですか? –

関連する問題