いくつかのRAW画像を操作するために使用したSwiftで書かれた小さなスクリプトがあり、Xcodeの以前のバージョンまで驚異的に機能しました(最後のバージョンが正確には覚えていませんが、バージョン7.0で機能したことはわかっています. Swift 2 に変換してテストしました)。
しかし、今日実行しようとすると、うまくいきませんでした。私は小さなスニペットで問題を分離しました:
let turl = NSURL(string: "file:///some/random/path/IMG_5467.CR2")!
let tdata = NSData(contentsOfURL: turl)
print ("data size = \( tdata!.length )")
//let imageSource = CGImageSourceCreateWithURL( turl, nil );
let imageSource = CGImageSourceCreateWithData(tdata!, nil);
print( "StatusComplete = \(CGImageSourceStatus.StatusComplete.rawValue)" );
print( "StatusUnknownType = \(CGImageSourceStatus.StatusUnknownType.rawValue)" );
print( "URL: \(turl) - \(imageSource) - status \( CGImageSourceGetStatus(imageSource!).rawValue )" );
print( "count \( CGImageSourceGetCount(imageSource!) )" );
print( "status 0 \( CGImageSourceGetStatusAtIndex(imageSource!, 0).rawValue )" );
print( "type \( CGImageSourceGetType( imageSource! ) )" );
print( "Supported types: \( CGImageSourceCopyTypeIdentifiers() )" )
exit(1)
そして、これは結果の出力です:
data size = 24730146
StatusComplete = 0
StatusUnknownType = -3
URL: file:///some/random/path/IMG_5467.CR2 - Optional(<CGImageSource 0x7fd51a40d2d0 [0x7fff7763ded0]>) - status -3
count 0
status 0 -3
type nil
URL から直接 (を使用してCGImageSourceCreateWithURL
) 画像を読み込もうとすると、画像ソースのステータスは 0 (StatusComplete) ですが、インデックス 0 のステータスも -3 (StatusUnknownType) です。もう1つの違いは、URLでロードするときのタイプが「com.canon.cr2-raw-image」であることです。
データのサイズは正しく、URL は正しく、ファイルは正しく読み込まれています。Swift 自体に問題がないことを確認するために、ここで Objective-C を使用してファイルを読み込もうとします。
何か案は?新しい RAW 画像ファイルと既にテスト済みの RAW 画像ファイルの両方を試しました。