2017-11-28 3 views
0

.obj 파일의 썸네일 미리보기를 NSImageView에 표시 할 수 있도록 .obj 파일에서 base64 문자열로 데이터를 변환하려고합니다..obj 파일 데이터를 NSImage로 변환

다음은 로컬 URL에서 자산을 가져 와서 base64 문자열로 변환하는 코드입니다. 그런 다음 이미지를 변환하려고 시도한 Data으로 변환합니다.

let fileUrl = Foundation.URL(string: input_string) 


    let data: NSData? = NSData(contentsOfFile: input_string) 

    if let fileData = data { 

     let base64String = fileData.base64EncodedString() 

     let decodedData = NSData(base64Encoded: base64String, options: NSData.Base64DecodingOptions(rawValue: 0)) 

     let decodedimage = NSImage(data: decodedData! as Data) 
} 

내가 데이터 세트를 얻고 있음을 알 수 있지만, decodedImage는 항상 무기 호입니다 -이 내가 대해 충분히 알 수 없습니다 .OBJ 이미지 형식, 함께 할 수있는 뭔가가 같은데요. 모든 통찰력/도움 감사.

편집 : 다음은 파인더 미리보기에서 .obj 파일의 모양을 보여주는 스크린 샷입니다.

enter image description here

+0

@MartinR이 경우 그냥 간단한 얼룩임말입니다. 제 질문을 파인더 미리보기의 스크린 샷으로 업데이트했습니다. – narner

+0

질문과 관련이 없지만 input_string이 파일 경로 인 경우 URL (fileURLWithPath :) 초기화 프로그램을 사용해야합니다. URL (string :) 초기화 프로그램에 문자열에 url 체계가 있어야합니다.이 경우 fileURL 경로는 "file : //"이됩니다. 게다가 Xcode/Swift를 최신 버전으로 업데이트해야합니다 (Swift 2는 더 이상 Xcode9로 지원되지 않습니다). Btw는 자신의 구조체 또는 클래스 이름이 URL 인 것처럼 보입니다. 이름을 다른 것으로 변경해야합니다. –

답변

1

OBJ는 화상 포맷이 아니다. 그것의 오래된 3D model format. 이미지로 변환하려면 파일을 열고 기하학 노드로 SCNScene에 추가 한 다음 SCNView을 이미지에 렌더링하고 해당 이미지를 저장해야합니다.

+0

그건 의미가 있습니다. Josh. 그런데 내가 게시 한 스크린 샷과 같이 미리보기를 렌더링하는 방법은 어떨까요? – narner

+0

나는 finder가 정확하게 똑같은 일을한다고 가정한다; 단, 결과 축소판을 캐시 할 때마다 매번 다시 렌더링 할 필요가 없습니다. 미리보기 이미지를 포함하는 일부 3D 형식. obj는 그들 중 하나가 아닙니다. –