2012-01-18 13 views
2

ALAssetsを使用してiPadで画像を作成しています。終了したら、返されたURLでUIImageを作成しようとしましたが、ロードされません。これはコードです:ALAssetsから返されたパスURLで画像を読み込むことができません

LAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; 
    [library writeImageToSavedPhotosAlbum:[anImage CGImage] orientation:(ALAssetOrientation)[anImage imageOrientation] completionBlock:^(NSURL *assetURL, NSError *error){ 
     if (!error) { 
      CGImageSourceRef src = CGImageSourceCreateWithURL((CFURLRef) [NSURL fileURLWithPath:[assetURL absoluteString]], NULL); 

私の目的は、デバイスに画像を保存しImageIOでを使用して別の形式に変換し、最終的に、Webサービスに送信することです。 CGImageSourceRefがnullの場合、同じ結果を持つ標準のUIImageでも試しました。

私はここで間違っていますか?

EDIT:問題は、CFURLRefを作成するときです。 私は

CGImageSourceCreateWithURL((CFURLRef) assetURL, NULL); 

をすれば、私はこのエラー

ImageIOでを得た:CGImageSourceCreateWithURL CFURLCreateDataAndPropertiesFromResourceはエラーコード-11で失敗しました。

しかし、私は

[NSURL fileURLWithPath:[assetURL absoluteString]] 

パスとURLを変換しようとする場合、私はきちんと法により必要とさCFURLRefを作成する方法を見つけることができません

assets-library:/asset/asset.JPG%3Fid=57BBBA99-E7BF-4DB7-839E-F915005E6DFA&ext=JPG -- file://localhost/ 

に変更されます。

[assetURL relativePath] 
[assetURL relativeString] 
[assetURL absoluteURL] 
[assetURL absoluteString] 
/asset.JPG , 
assets-library://asset/asset.JPG?id=57BBBA99-E7BF-4DB7-839E-F915005E6DFA&ext=JPG 
assets-library://asset/asset.JPG?id=57BBBA99-E7BF-4DB7-839E-F915005E6DFA&ext=JPG 
assets-library://asset/asset.JPG?id=57BBBA99-E7BF-4DB7-839E-F915005E6DFA&ext=JPG 

[NSURL fileURLWithPath:[assetURL relativePath]] 
[NSURL fileURLWithPath:[assetURL relativeString]] 
[NSURL fileURLWithPath:[assetURL absoluteString]] 
file://localhost/asset.JPG 
assets-library:/asset/asset.JPG%3Fid=57BBBA99-E7BF-4DB7-839E-F915005E6DFA&ext=JPG -- file://localhost/ 
assets-library:/asset/asset.JPG%3Fid=57BBBA99-E7BF-4DB7-839E-F915005E6DFA&ext=JPG -- file://localhost/ 

ヘルプすでにALAssetを持っており、あなたの目標はCGImageRefあなたであれば、私はこの:-(

答えて

0

これは私が私の場合のために何をしたかである。

UIImage* anImage; //this is the original image  
    NSData * imgData = UIImageJPEGRepresentation(anImage, 0.7); 
    CGImageSourceRef src = CGImageSourceCreateWithData((CFDataRef) imgData, NULL); 

    NSMutableData *data = [NSMutableData data]; 
    CFStringRef imageType = CFSTR("com.microsoft.bmp"); 
    CGImageDestinationRef myImageDest = CGImageDestinationCreateWithData((CFMutableDataRef) data, imageType, 1, nil); 

    //Convert! 
    CGImageDestinationAddImageFromSource(myImageDest, src, 0, myOptions); 
    CGImageDestinationFinalize(myImageDest); 
    //Freeing things 
    CFRelease(myImageDest); 
    CFRelease(src); 

しかし、これは画像を変換するだけで、ファイルには保存されません。元の質問に対する答えになるはずです。

-1

で立ち往生していてください、私は私が考えることができるすべての変換を印刷しようとしたし、これが結果ですこのような何かを行うことができます。

ALAssetRepresentation* rep = [asset defaultRepresentation]; 

NSDictionary* options = [[NSDictionary alloc] initWithObjectsAndKeys: 
         (id)kCFBooleanTrue, (id)kCGImageSourceCreateThumbnailWithTransform, 
         (id)kCFBooleanTrue, (id)kCGImageSourceCreateThumbnailFromImageAlways, 
         (id)[NSNumber numberWithDouble:400], (id)kCGImageSourceThumbnailMaxPixelSize, 
         nil]; 

CGImageRef image = [rep CGImageWithOptions:options]; 
+0

ありがとうございました。 – momo

+1

申し訳ありませんが、これは動作しません。はい、イメージを作成しますが、渡される最大サイズは何も行われません。非常に大きなイメージが返されます。 – akaru

+0

あなたは正しいです、私は私の特定のケースでやったことです、それが誰かを助けることを願っています – momo

関連する問題