2014-07-10 2 views
0

Google에서는 파일 확장자를 사용할 수 없거나 잘못되었을 때 이미지 유형을 식별하기 위해 RMagick을 사용하고 있습니다. format 속성은 내 로컬 맥 dev에 상자에 작동하지만, Heroku가에는Herog에서 RMagick 이미지 유형 감지가 실패했습니다.

irb> require 'RMagick' 
irb> image = Magick::Image::read('https://s3.amazonaws.com/com.appgrinders.test/images/dog.gif')[0] 
irb> image.format 
=> nil 

어떤 아이디어 ... nil을 반환?

+0

두 컴퓨터에서 동일한 버전의 ImageMagick/RMagick을 사용하고 있습니까? – dlemstra

+0

@dlemstra - Herock이 6.5.7-8 버전을 실행하는 동안 내 Mac의 ImageMagick이 버전 6.8.0-10 인 것으로 나타 났지만 ImageMagick 변경 로그에는 아무것도 표시되지 않았지만 RMagick (2.13.2)의 동일한 버전 그게 중요하다 – Yarin

+0

@Adriano가 제안한 '신원 확인'체크는 가장 좋은 방법이지만, 여전히 [MiniMagick] (https://github.com/minimagick/minimagick)을 사용해보고 그 결과물을 볼 수 있습니까? 둘 다 동일한 ImageMagick을 사용하지만 여전히 궁금합니다. – Subhas

답변

1

분명히이 문제는 ImageMagick이 원격 이미지 (here 참조)를 읽을 수 없기 때문에 발생합니다. 이상하게도 문제는 Heroku (?)에서만 나타납니다. 기본 ImageMagick 형식은 'HTTPS'를 반환하고 RMagick 형식은 nil을 반환합니다. 내 맥에

:

$ identify -verbose https://s3.amazonaws.com/com.appgrinders.test/images/dog.gif 

Format: GIF (CompuServe graphics interchange format) 
... 

에게 Heroku에 :

$ identify -verbose https://s3.amazonaws.com/com.appgrinders.test/images/dog.gif 

Format: HTTPS 
... 

그래서 그 대답은 로컬 이미지를 복사 해 와서 읽는 것입니다.

+0

Heroku에는 로컬 파일 시스템이 없습니다. – CarlosCervantes

2

ImageMagick 페이지에서 이미지 파일에 대한 정보를 담당하는 명령을 볼 수 있습니다.

http://www.imagemagick.org/script/identify.php

당신이 명령은 Heroku가 콘솔에서 확인하고 실행 시도합니까?

봐 :

$ identify image.jpg 
=> image.jpg JPEG 960x960 960x960+0+0 8-bit sRGB 89KB 0.010u 0:00.009 

나 :

$ identify -verbose image.jpg 

Image: image.jpg 
Format: JPEG (Joint Photographic Experts Group JFIF format) 
Mime type: image/jpeg 
Class: DirectClass 
Geometry: 960x960+0+0 
Units: Undefined 
Type: TrueColor 
Endianess: Undefined 
Colorspace: sRGB 
Depth: 8-bit 
Channel depth: 

당신이에게 Heroku에 ImageMagick이를 업그레이드 할 수 있습니까?

+0

감사합니다.이 확인하고 형식을 로컬 이미지에 대해 두 플랫폼에서 올바르게 반환하는 동안 원격 이미지 - Heroku에 대한 자세한 내용은 Heroku 실패합니다. – Yarin

0

나를 위해 그것은 변환하려고하는 이미지에 대한 s3 URL에서 https를 제거하는 것처럼 쉽습니다.

image_url = image_url.gsub('https://', 'http') 

이제 이미지를 변환 할 수 있습니다. 내 버킷은 http 및 https의 콘텐츠를 제공 할 수 있습니다.

관련 문제