[ios] 동영상 편집

https://developer.apple.com/library/content/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/03_Editing.html#//apple_ref/doc/uid/TP40010188-CH8-SW1

광고

[iOS] Crashed, GPUImageContext presentBufferForDisplay

Symptom

symptom : Crashed when power button pressed app was running.

스크린샷 2016-12-01 오후 2.22.58.png

Solution

OpenGL ES processingQueue를 사용하고 비활성화 될 때 끄도록 설정함.

//AppDelegate
func applicationWillResignActive(_ application: UIApplication) {
    runSynchronouslyOnVideoProcessingQueue {
        glFinish()
    }
}

References

[IOS] CIImage, CGImage, UIImage 차이점

아이폰 이미지 클래스 종류

UIImage : UIKit framework

이 객체는 이미지 데이터를 보여주기 위한 high-level 수단을 제공한다.
파일이나 Quartz 이미지 객체나 raw image 데이터로부터 이미지들을 생성할 수 있다.
UIImage 클래스는 또한 이미지 객체를current graphics context에 그리기 위한 여러가지 옵션을 제공한다. 옵션으로는 blend model나 opacity value를 조정할 수 있다.

UIImage 클래스를 사용하여 읽어들일 수 있는 이미지 포멧이다.
스크린샷 2014-10-16 오후 6.33.18

CIImage : Core Image framework
CIImage 클래스는 이미지를 나타낸다. Core Image 들은 전부 immutable이다.
CIImage 객체는 다른 Core Image 클래스들에 사용되는데 CIFilter, CIContext, CIVector, CIColor가 있다. 이것을 사용하면서 유리한 점은 이미지를 필터링 하는데 이점을 가진다.
그러나 CIImage는 이미지를 렌더링 하지 않고 이미지를 만드는 “recepi”만 보관한다(이미지를 만들기 위한 재료라고 이해 했다) , lazy evaluation method는 Core Image가 가능한 효과적으로 동작할 수 있도록 한다.

CIContext와 CIImage 객체는 immutable이며 Thread Safe하다. 즉 여러 thread 는 GPU 또는 CPU CIContext 를 이용하여 CIImage 객체를 렌더링 한다.

그러나 CIFilter 객체는 mutable 객체며 필터는 다른 스레드 들과 공유 될 수 없다.

좀 더 자세한 것은 Core Image Programming Guide를 참고한다.

CGImage : Core Graphics framework

The CGImageRef opaque type represents bitmap images and bitmap image masks, based on sample data that you supply. A bitmap (or sampled) image is a rectangular array of pixels, with each pixel representing a single sample or data point in a source image.보다 자세한 사항은 “Quartz 2D Programming Guide”를 참고한다.

[Web] ImageMagick no decode, no encode

If you see below error message when try to resize some jpg images using ImageMagick

{code}
no decode delegate for this image format
no encode delegate for this image format
{code}

read this document carefully
http://www.imagemagick.org/script/advanced-unix-installation.php#mingw

위 내용을 요약해보면…일단 jpeg library를 설치한뒤에

$ yum install libjpeg libjpeg-devel

이미지매직을 다시 설치 하라는 말이다.

$ ./configure ….
$ make
$ make install

jpeg 이 있는지 권한은 잘 들어가있는지 확인한다.

$ identify -list format

JPEG* JPEG rw- Joint Photographic Experts Group JFIF format (62)
JPG* JPEG rw- Joint Photographic Experts Group JFIF format

rw가 의미하는 것(본문 일부 발췌)
You should see a mode of rw- associated with the JPEG tag. This mode means the image can be read or written and can only support one image per image file.

결론은 삽질하지 말고 문서를 잘 봐야 한다.  ^^