본문 바로가기

Swift

(57)
BitmapContext, CVPixcelBuffer 내의 이미지 확인용 코드 Context, pxbuffer 등에 이미지가 제대로 그려졌는지, 혹은 제대로 들어갔는지 확인하기 위하여 ImageView에 찍어보는 코드앱 소스에서 불필요한 부분을 정리 중인데 나중에 쓰일 데가 있을까봐 남겨둔다. // context에 그림이 제대로 그려졌는지 이미지로 변경하여 확인 if let contextImage = CGBitmapContextCreateImage(context) { let checkImage1 = UIImage.init(CGImage: contextImage) let parentVC = sender as! AnimateVC //parentVC.animatedImageView.image = checkImage1 let checkImage2 = CIImage.init(CVPixelB..
스위프트에서 CFDictionary 사용하기 사실 아직도 이해하고 있지 못 하는 코드이기도 하다. Objective-C에서는 단 2~3줄 코딩으로 해결되는 것을 스위프트에서는 왜 이렇게 코딩하는 것인지 모르겠다. (물론 내가 다른 값을 추가하긴 했지만..) /* NSDictionary *options = @{(id)kCVPixelBufferCGImageCompatibilityKey: @YES, (id)kCVPixelBufferCGBitmapContextCompatibilityKey: @YES}; */ // stupid CFDictionary stuff let cfnumPointer = UnsafeMutablePointer.alloc(1) let cfnum = CFNumberCreate(kCFAllocatorDefault, .IntType, cfnu..
Swift에서 포인터에 메모리 할당하기 스위프트에서 포인터를 사용하게 되면 메모리를 할당해주어야 나중에 실행시켜보면 오류가 나지 않는다. 아직 포인터 개념이 좀 약해서 선언 후 이짓저짓 다 해 보았지만 결론은 큰 차이가 없어서 기록을 남긴다. let pxbuffer = UnsafeMutablePointer.alloc(1) // if pxbuffer = nil, you will get status = -6661 처음에 참고한 코드는 nil을 넣으라고 했는데 리턴값이 6661 오류가 발생하였다.다음으로 찾아낸 코드는 .alloc(1)을 해주었는데 이대로 해 보니 오류는 발생하지 않았다. 하지만 다른 데서 오류가 났었기 때문에 이 부분을 신경 쓸 겨를이 없었다. 나중에 오류가 나지 않는 코드를 완성한 후 1 이외에도 다른 값들을 넣어 보았다. le..
To understand pixelBufferFromCGImage with Swift I have 2 problems. one is black screen and another is abnormal pxbuffer image. black screen problem is because Changing UIImage to CGImage. abnormal pxbuffer image problem is below.left one is abnormal pxbuffer image, right one is source image. The cause was bytesPerRow.I tested an image with 100px image. but pxbuffer's bytesPerRow was 448. So I solved like below. (source: https://github.com/seo..
여러장의 사진으로 동영상 만들기 - pixelBufferFromCGImage의 이해 여러 장의 사진을 이용해서 동영상을 만드는 앱을 만들고 있다. 처음 만들어 보는 앱이라 인터넷에서 떠도는 소스를 짜집기하는 수준이다. 현재까지 파악된 사진을 이용하여 동영상을 만드는 방법은 AVAssetWriter를 이용해서 만드는 것이다.그리고 AVAssetWriter를 이용하려면 CVPixcelBuffer라는 것을 이용해야만 하는 것 같다. 인터넷에 떠도는 소스는 대개 Objective-C로 만들어진 것이라 Swift로 변환해야만 했는데 이것 역시 쉬운게 아니었다. 특히 난 C의 포인터 개념도 약해서 혼자 힘으로 Swift로 변환하는 것은 무리였다. 아무튼 여기저기 서핑한 끝에 가장 잘 알려진 pixelBufferFromCGImage라는 메소드를 찾을 수 있었고 다른 여러 사람들도 이 소스를 이용해서..
Swift: Convert between CGImage, CIImage and UIImage Swift에서 이미지 종류별로 변환하는 방법이 명쾌하게 설명된 사이트를 찾아서 여기에 기록한다. 출처: http://wiki.hawkguide.com/wiki/Swift:_Convert_between_CGImage,_CIImage_and_UIImage 사실 나는 이 자료를 UIImage를 CGImage로 변환하기 위해서 찾아왔는데 변환 방법이 간단하지 않아서 놀랐다.Swift: Convert CIImage to CGImage?1234567func convertCIImageToCGImage(inputImage: CIImage) -> CGImage! { let context = CIContext(options: nil) if context != nil { return context.createCGImage(..
이미지의 이해1 - Image Processing in iOS Part 1: Raw Bitmap Modification 사진으로 동영상 만드는 앱을 만들다 보니 이해할 수 없는 코드들을 너무 많이 만나게 되었다. CVPixcelBuffer, CGBitmapContext 등등.. 그리고 2016.5.11 현재 내가 만든 앱은 기능적으로는 정상 작동하지만 동영상에 사용되는 각각의 프레임이 검은 화면으로 나오는 상황에 처했으며 이를 해결할 수 있는 능력이 나에게는 없다. 그래서 이러한 이미지 처리를 이해하고 그 후 해결해야겠다는 생각이 들었다.그러다가 다음과 같은 좋은 글을 발견하고 이를 간략하게 번역하여 기록하고자 한다. 출처: https://www.raywenderlich.com/69855/image-processing-in-ios-part-1-raw-bitmap-modification spooky image filter라..
내가 만든 앱이 생성한 파일 다운받고 내용 확인하기 (xcappdata, download container) 고속 연사 촬영 사진을 가지고 동영상을 만드는 앱을 제작 중이다. 그러나 역시 첫 앱이라 그런지 너무 헤매고 있다. 어찌어찌 하여 앱 내에 파일을 만들어 저장하는 것 까지는 성공을 했는데 그게 제대로 된 동영상인지 확인하려는데 확인을 못 하겠는 것이다.이 때문에 앱 내에 동영상 플레이하는 기능까지 만들어서 넣었건만 검은 화면만 나와서 답답하던 차에 앱 내의 데이터를 확인하는 방법을 알게 되었다. 다음 순서대로 하면 된다.XCode 메뉴 > Window > Devices 선택내 폰 연결(물론 내 폰은 USB로 연결을 해 놓은 상태이어야)내가 만든 앱 선택기어 표시 클릭하고 Download Container.. 선택하고 파인더에 저장하면 ~.xcappdata 파일이 저장된다.~.xcappdata 파일을 오른..