2011-08-30 17 views
7

Tôi sử dụng carrierwave và mini_magick để tải lên hình ảnh. Trong quá trình phát triển mọi thứ đều ổn, nhưng trong quá trình sản xuất nó tăng lên FloatDomainError (Infinity) khi tôi cố gắng tải lên một hình ảnh. Tôi có một số dự án được lưu trữ trên cùng một máy chủ và mọi thứ đều ổn với việc tải lên. Tôi sử dụng Rails 3.0.10. Bất kỳ ý tưởng nào tôi có thể sửa chữa nó? Cảm ơnFloatDomainError (Vô cực)

Trả lời

10

Tôi cũng gặp vấn đề tương tự. Vấn đề là mini_magick. Nếu tệp hình ảnh chạy identify là sai, xác định sẽ xuất ra một số loại lỗi, ví dụ:

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

mini_magick cố gắng để phân tích được thông báo lỗi như kích thước, và kết quả là 0. Điều này dẫn đến một phân chia bằng không mà kết quả trong trường hợp ngoại lệ bạn đã đề cập. Đây là lý do tại sao nó chỉ thất bại với một số hình ảnh.

identify có tùy chọn -quiet để tắt các thông báo cảnh báo này. Tôi đã chia nhỏ mini_magick tại https://github.com/fschwahn/mini_magick và thêm tùy chọn yên tĩnh. Tôi hy vọng sự thay đổi này sẽ được kéo vào (hoặc vấn đề sẽ được cố định một cách thanh lịch hơn). Tuy nhiên, hiện tại bạn có thể sử dụng ngã ba của tôi bằng cách thêm thông tin sau vào Gemfile của bạn:

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

Cảm ơn bạn đã trả lời. Sẽ cố gắng càng sớm càng tốt. Trong các dự án hiện tại tôi bắt đầu sử dụng rmagick thay vào đó. –

+1

Thay đổi của tôi đã bị kéo và phiên bản mini_magick mới đã được phát hành, vì vậy nếu bạn phụ thuộc vào phiên bản mới nhất của mini_magick, sự cố sẽ biến mất. – fabi

+0

cảm ơn. Tôi sẽ thử ngay khi tôi cần =) –

1

Đã khắc phục rằng thay thế resize_and_fill thành resize_and_pad. Vẫn không hiểu hành vi kỳ lạ của nó.

+0

thực sự 'resize_to_fill' và resize_and_pad' có các hiệu ứng khác nhau. thay thế một cái khác chỉ là một cách để ứng dụng của bạn chạy với bất kỳ giá nào. –

+0

Đồng ý. Đó là một giải pháp tạm thời chỉ để làm cho nó hoạt động. Hy vọng rằng giải pháp @ fabi hoạt động ngay bây giờ –

0

Tôi gặp lỗi này khi cập nhật đá quý mới nhất, khi tôi tạo hình thu nhỏ hình ảnh cho tệp pdf của mình.

Mã này thất bại:

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

Tôi giải quyết nó bằng cách thay thế thứ tự của các dòng. Điều quan trọng là trước khi thay đổi kích thước MiniMagic đầu tiên nên chuyển đổi hình thu nhỏ thành hình ảnh và sau đó nên cố gắng thay đổi kích thước.

Đây là giải pháp làm việc cho tôi. Có lẽ nó sẽ giúp cho ai đó.

process :convert => :png 
    process :resize_to_fill => [260, 192] 
Các vấn đề liên quan