2011-08-30 2 views
7

반송파 및 mini_magick을 사용하여 이미지를 업로드합니다. 개발 중에는 문제가 없지만 제작시 이미지를 업로드하려고하면 FloatDomainError (Infinity)이 발생합니다. 나는 동일한 서버에서 호스팅되는 여러 프로젝트를 가지고 있으며 업로드하는 데는 문제가 없습니다. Rails 3.0.10을 사용합니다. 어떤 아이디어로 해결할 수 있습니까? 감사합니다FloatDomainError (Infinity)

답변

10

나는 동일한 문제가있었습니다. 문제는 mini_magick입니다. identify이 실행되는 이미지 파일이 잘못된 경우, identify는 일종의 오류를 출력합니다.

identify: Corrupt JPEG data: 7929 extraneous bytes before marker 0xed `image.jpg' @ warning/jpeg.c/EmitMessage/230. 
11811 8665 

mini_magick

는 차원으로 오류 메시지를 구문 분석을 시도, 그 결과는 0입니다. 이 결과는 0으로 나누기 때문에 언급 한 예외가 발생합니다. 이것이 일부 이미지에서만 실패하는 이유입니다.

identify에는 -quiet 옵션이있어 이러한 경고 메시지가 표시되지 않습니다. 나는 https://github.com/fschwahn/mini_magick에 mini_magick을 분기하고 조용한 옵션을 추가했습니다. 이 변경 사항이 반영되기를 바랍니다 (또는 문제가보다 세련된 방식으로 수정 될 것입니다). 그러나 지금 당신은 당신의 Gemfile에 다음을 추가하여 내 포크를 사용할 수 있습니다 : 나는 우분투있는 Imagemagick 패키지 버전 6.7을 사용했다

gem 'mini_magick', :git => 'git://github.com/fschwahn/mini_magick.git' 
+0

답장을 보내 주셔서 감사합니다. 빨리 포크를 시험해 보겠습니다. 현재 프로젝트에서 저는 대신 rmagick을 사용하기 시작했습니다. –

+1

변경 사항을 가져오고 새 버전의 mini_magick이 릴리스되었으므로 최신 버전의 mini_magick을 사용하는 경우 문제가 없어집니다. – fabi

+0

감사합니다. 내가 필요하면 빨리 시험해 볼게. =) –

1

resize_and_fillresize_and_pad으로 바꾸는 것을 수정했습니다. 여전히 이상한 행동을 이해하지 못합니다.

+0

실제로 'resize_to_fill'과 resize_to_fad는 서로 다른 효과가 있습니다. 하나를 다른 것으로 대체하는 것은 응용 프로그램을 어떤 가격으로 실행시키는 것일뿐입니다. –

+0

동의합니다. 그건 단지 일시적인 해결책이었습니다. 희망은 @ fabi의 솔루션은 지금 작동 –

0

내 PDF 파일의 이미지 미리보기 이미지를 생성 할 때 최신 보석 업데이트으로이 오류가 발생했습니다.

이 코드 실패

version :thumb do 
    process :resize_to_fill => [260, 192] 
    process :convert => :png 
    process :set_content_type 
    process :thumbnail_pdf 
end 

제가 라인의 순서를 교체하여 해결할. 중요한 것은 MiniMagic의 크기를 변경하기 전에 이미지에 미리보기 이미지를 먼저 변환해야하며 그 후에는 크기를 조정해야한다는 것입니다.

여기는 나를 위해 일한 해결책입니다. 어쩌면 그것은 누군가를 도울 것입니다.

process :convert => :png 
    process :resize_to_fill => [260, 192]