2013-06-19 1 views
2

내가이 작업을 수행 할 수있는 단계는 다음과 같습니다 사용자가 서버를 서버가 사용하는 애니메이션 GIF NodeJS에서 GraphicsMagick을 사용하여 GIF의 첫 번째 프레임을 추출하고 PNG로 저장하려면 어떻게해야합니까? 여기

  • 에 대한 링크 "요청 (URL)"을 제공

    1. 파일을 검색 할 수
    2. 서버는
    3. 서버는 아마존 S3에 썸네일을 업로드있는 GIF의 첫 번째 프레임의 썸네일을 생성하는 문제는 내가 GIF의 전나무를 추출하는 방법을 알아낼 수 없습니다 3 단계에서 존재

    st 프레임입니다. GraphicsMagick을 사용하는 것을 선호하지만, 그 작품에 대해 알고있는 또 다른 방법이 있다면, 나는 가장 감사 할 것입니다!

    NodeJS가 사용되고 있습니다.

  • +0

    Node.js 용 GraphicsMagick 패키지가 있습니다. http://aheckmann.github.io/gm/ – GJK

    +0

    @GJK 그래, 그게 내가 사용하고있는거야. 불행히도 URL 끝에 [0]을 추가하려고하면 첫 번째 프레임을 잡지 못합니다. 단지 gif를 진절머리 나는 품질로 저장하는 것입니다. – aleclarson

    +0

    어떤 graphicsmagick 명령을 사용해야하고'gm' 명령으로 어떤 명령을 생성합니까? –

    답변

    6

    문서에없는 이유는 모르지만 다른 사람은 answered this here on stackoverflow입니다.

    파일의 경우 :

    gm('/path/to/animated.gif') 
    .selectFrame(0) 
    .write('/path/to/firstframe.png', function(err){ 
        if (err) print(' :( '); 
    }) 
    

    스트림/버퍼 :

    gm(streamOrBuffer) 
    .selectFrame(0) 
    .write('/path/to/firstframe.png', function(err){ 
        if (err) print(' :( '); 
    }) 
    

    그래서, 당신은 하나의 파일 경로 문자열 또는 스트림/버퍼, 그래서 등으로 이것을 사용할 수 있습니다

    문서에서 경로 문자열을 '/path/to/animated.gif[0]'과 같이 변경하여 선택하려는 프레임에보다 구체적으로 지정해야한다고 지정했지만 지정하지 않고 해당 코드를 테스트했습니다 프레임과 괜찮 았는데 ([email protected] 및 ImageMagick 6.7.7-10 2014-03-06 사용). 또한, (selectFrame을 사용하지 않고) 문서에있는 내용이 작동하지 않았습니다. 결국 프로세스가 중단되고 전체 GIF의 여러 프레임이 만들어집니다.

    왜 그들이 문서화되지 않은 이유는 입니다. selectFrame 아직 나를 넘어 있습니다. 그들이 인용 된 링크에서 지적했듯이 공개 된 문제는 wondering precisely that입니다.

    1

    서버 측에서 작동하지 못했기 때문에 .gif를 <canvas> 요소로 그려서 .gif의 첫 번째 프레임을 "시뮬레이트"했습니다. 이것은 나가를 위해 가고 있던 일시 중지 한 gif를 주었다.