2013-04-01 30 views
21

Tôi đã đập đầu của tôi chống lại điều này trong vài ngày. Gần đây, người tải lên hình ảnh của tôi đã ngừng hoạt động đúng cách. Tôi đã nghiên cứu một số khả năng, nhưng không có giải pháp được đề xuất nào có tác dụng trong trường hợp của tôi.Lỗi PaperClip NotIdentifiedByImageMagickError khi chia tỷ lệ hình ảnh

Các thông báo lỗi là:

#<Paperclip::Errors::NotIdentifiedByImageMagickError:Paperclip::Errors::NotIdentifiedByImageMagickError> 

Dưới đây là chi tiết:

  • Mac OS X 10.8.3
  • ImageMagick 6.8.4-4 2013-03-29
  • libtool =>/usr/bin/libtool
  • Đường ray 3.2.13
  • Ruby 1.9.3p19 4

development.rb chứa đường dẫn thích hợp (và tôi đã xác minh rằng nó là đúng bằng which identify)

Paperclip.options[:command_path] = "/usr/local/bin/" 

Gemfile.lock (phần liên quan)

paperclip (3.4.1) 
    activemodel (>= 3.0.0) 
    activerecord (>= 3.0.0) 
    activesupport (>= 3.0.0) 
    cocaine (~> 0.5.0) 

MODEL (tôi cập nhật một đối tượng lớp học , nhưng hình ảnh nằm trong mô hình vị trí. (Classroom has_one :location, :as => :locatable)

Mẫu location.rb

class Location < ActiveRecord::Base 
    ## Paperclip method for uploading location images 

    has_attached_file :picture, :styles => {:show => "1200x500#", :medium => "300x300#", :thumb => "100x100>"}, :convert_options => {:show => "-gravity center"} 
    has_attached_file :building_sign, :styles => { :show => ["1200x500#", :jpg], :medium => ["300x300#", :jpg], :thumb => ["100x100#", :jpg] }, :convert_options => {:show => "-gravity center"} 
    belongs_to :locatable, :polymorphic => true 
    belongs_to :location_type 
    validates :name, :presence => true 

    validates :latitude, :presence => true, 
         :length => {:within => 9..18}, 
         :numericality => true 
    validates :longitude, :presence => true, 
         :length => {:within => 9..18}, 
         :numericality => true 
end 

khiển classrooms_controller.rb

def update 
    @classroom = Classroom.find_by_facility_code_heprod(params[:id].upcase) 

    respond_to do |format| 
    if @classroom.update_attributes(params[:classroom]) 
     format.html { redirect_to(@classroom, :notice => 'Classroom was successfully updated.') } 
     format.xml { head :ok } 
    else 
     format.html { render :action => "edit" } 
     format.xml { render :xml => @classroom.errors, :status => :unprocessable_entity } 
    end 
    end 
end 

Những gì tôi đã cố gắng.

  • Tôi đã đảm bảo rằng tên hình ảnh đơn giản (USB2230.jpg), không có dấu hai chấm.
  • Tôi đã cập nhật phiên bản ImageMagick thành phiên bản mới nhất.
  • Tôi cũng đã tải xuống lại và cài đặt lại Công cụ CommandLine cho 10.8.3 (ai đó đã đề xuất rằng sự cố có thể liên quan đến một công cụ libtool lỗi thời).
  • Tôi đã khởi động lại máy tính.
  • Tôi đã thử các biến thể trên các phiên bản đá quý bao gồm

    # variation 1 
    gem 'paperclip', '~> 2.8.0' 
    gem "cocaine", "=0.3.2" 
    
    # variation 2 
    gem "paperclip", "~> 3.4.0" 
    gem "cocaine", "= 0.4" 
    
    # variation 3 (which is what is reflected in the included Gemfile.lock info above). 
    gem "paperclip", "~> 3.4.0" 
    

Nếu tôi tháo mở rộng quy mô,

:styles => {:show => "1200x500#", :medium => "300x300#", :thumb => "100x100>"}, 
:convert_options => {:show => "-gravity center"} 

các công trình tải lên, nhưng tôi loại cần mở rộng quy mô ;-)

Có ai có thể thấy thứ gì đó tôi bị thiếu không?

Trả lời

0

Tôi chỉ giải quyết vấn đề này. brew thực hiện cuộc gọi thư mục Cellar,/usr/local/Cellar Xác minh nếu bạn không có hai ImageMagick, tôi đã có một tên ImageMagick-Ruby182, vì vậy, nếu bạn có nó chạy brew uninstall ImageMagick-Ruby182, và cũng bình thường imagemagick, và cài đặt lại hình ảnh ma thuật.

0

Vui lòng cập nhật phiên bản của đá quý kẹp giấy và đá quý cocaine. Đặt phiên bản PaperClip: 3.4.1 Đặt phiên bản Cocaine: 0.5.

tôi phải đối mặt với cùng một vấn đề và vấn đề của tôi đã ở đó trong kẹp giấy ngọc github hành

+0

Phiên bản đã có giá trị 3.4.1 và cocaine ở mức 0.5.0 (như đã nêu trong Gemfile.lock được liệt kê ở trên). – humbledaisy

3

Tôi có vấn đề tương tự, nhưng kẹp giấy cũ (3.0.2).

Trong trường hợp của tôi, tôi cố định nó với:

gem 'cocaine', '0.3.2' 
0

Bạn đã đề cập rằng bạn đã cố gắng nâng cấp ImageMagick, nhưng tôi đã có cùng một vấn đề và nâng cấp lên ImageMagick 6.8.0-10 2013-03-03 cố định nó cho tôi.

+0

Cảm ơn. Chỉ cần cập nhật lên 6.8.5-6 2013-05-16 mà không có may mắn. – humbledaisy

10

Tôi gặp sự cố tương tự, mặc dù máy chủ của tôi có trên Linux. Không thể cho bạn biết chính xác làm thế nào để làm điều đó bởi vì tôi không có một máy Mac để kiểm tra, nhưng hy vọng điều này chỉ cho bạn đi đúng hướng.

này làm việc cho tôi với ImageMagick 6.8.5-5, Kẹp giấy 3.4.2, phiên bản mới nhất của cocaine, Rails 3.2.13:

tôi đã đi vào geometry_detector_factory.rb trong đá quý Kẹp giấy và nhận xét ra 2 đường xung quanh các cuộc gọi xác định: (bước này là không cần thiết, chỉ cần giải thích những gì tôi đã làm để xác định vấn đề)

#silence_stream(STDERR) do 
    Paperclip.run("identify", "-format '%wx%h,%[exif:orientation]' :file", :file => "#{path}[0]") 
#end 

cùng với "kết thúc" tuyên bố tương ứng. Điều này cho phép tôi xem các lỗi trên dòng lệnh khi chạy lệnh "xác định".

Về cơ bản các lỗi nói: "không giải mã đại biểu cho định dạng hình ảnh này"

Bạn có thể tra cứu lỗi và làm cho nó phát hiện ra, nhưng về cơ bản những gì tôi đã làm là đi đến usr/local/bin và chạy : (cũng không cần thiết, trừ khi bạn muốn xem những gì bạn đã cài đặt)

convert -list configure 

và tìm kiếm các đại biểu dòng. Tôi đã có một máy chủ Linux khác, nơi ImageMagick đang làm việc và sau khi so sánh hai tôi nhận ra cái mới chỉ có 2 đại biểu được cài đặt. Tôi đã có thể chạy:

yum install ImageMagick-devel 

và sau đó biên dịch lại ImageMagick với make, make install và nó hoạt động.

Bạn cũng có thể tìm thấy các đại biểu theo cách thủ công trên trang ImageMagick và cài đặt từng cái một nhưng thư viện đó khá nhiều đã bảo vệ nó cho tôi.

Gỡ lỗi ImageMagick? Không ai có thời gian cho điều đó!

+1

Cảm ơn bạn! Điều đó làm việc trên máy khách của tôi. (Tôi đã kết thúc bằng cách sử dụng cổng mac, mà tôi đã không thích làm, nhưng tôi đã dành quá nhiều thời gian gỡ lỗi này.) Các hướng dẫn tôi theo sau đã ở đây (http://www.imagemagick.org/script/binary-releases.php #macosx). Tôi cũng phải thay đổi môi trường phát triển của mình để trỏ đến Paperclip.options [: command_path] = "/ opt/local/bin /" – humbledaisy

+0

bạn cứu mạng tôi. cảm ơn – lngs

+0

Còn Ubuntu thì sao? :/Cùng một vấn đề ở đây, vẫn chưa tìm thấy giải pháp – Paladini

21

Chúng tôi vừa gặp sự cố này và hóa ra đó là vấn đề không cài đặt ghostscript. Tôi lấy lời khuyên của Scott Cornwell và loại bỏ sự im lặng của lỗi, và sau đó xác định rằng chuyển đổi đã thất bại vì ghostscript không có sẵn.

brew install ghostscript 

Đã khắc phục sự cố cho chúng tôi.

+2

Đây chính là nguyên nhân gây ra sự cố của tôi - Tôi đã sử dụng Paperclip để tải lên và thu nhỏ các tệp PDF. Không có Ghostscript được cài đặt đã dẫn đến nỗi buồn. – riney

+0

Tuyệt vời, điều này đã giải quyết được vấn đề của tôi! Tôi đã cố gắng để chỉ cần tải lên một pdf - không làm hình thu nhỏ hoặc bất kỳ thao tác trên đó. Các thông báo lỗi là một chút gây hiểu lầm trừ khi kẹp giấy cố gắng để tạo ra một hình thu nhỏ cho bạn từ pdf mà không có một yêu cầu rõ ràng. – Dorian

+0

Điều này. Bạn cần ghostscript để xử lý các tệp PDF. Cảm ơn bạn! –

0

Cài đặt lại libtool brew install libtool có hiệu quả đối với tôi.

5

Đã xảy ra sự cố trên môi trường cửa sổ của tôi, sử dụng kẹp giấy 3.5.2, cocaine 0.5.3 và ImageMagic 6.8.8.

Giải pháp là để thêm:

Paperclip.options[:command_path] = 'C:\Program Files\ImageMagick-6.8.8-Q16' 

để config/môi trường/development.rb

+0

Lần này một triệu. Đây là câu trả lời cho vấn đề của tôi, tôi tiếp tục cố gắng/người dùng/local/bin/và mọi biến thể không có kết quả. – ddonche

0

Đã cùng vấn đề với image_magic đã được phá vỡ chức năng kẹp giấy của chúng tôi trong sản xuất, nhưng không phải trong phát triển (kỳ lạ, tôi biết). Tuy nhiên, ngay cả sau khi loại bỏ imagemagick từ gemfile và Gemfile.lock cục bộ của chúng tôi (chạy gói cài đặt và tất cả những thứ đó) và sau đó triển khai trở lại sản xuất trên heroku, lỗi vẫn tồn tại trong quá trình sản xuất! (kỳ lạ, tôi biết).

gì đã kết thúc làm các trick đã chạy:

$ heroku repo:purge_cache -a myAppName 

(Trích từ: https://github.com/heroku/heroku-repo#purge_cache)

Khi bạn triển khai ứng dụng của bạn, Heroku lưu trữ một số thứ như tài sản của bạn và cài đặt đá quý để tốc độ lên triển khai. Mặc dù đây là một tính năng tuyệt vời, nhưng đôi khi nó có thể có tác dụng phụ, và trong trường hợp này, có vẻ như một thứ gì đó về đá quý tưởng tượng đã bị "kẹt" trong bộ nhớ cache của sản xuất, đó là lý do tại sao thanh toán đã giải quyết được vấn đề cho chúng ta. , ứng dụng của bạn sẽ tự xây dựng lại từ đầu trong lần triển khai tiếp theo của bạn)

0

Tôi gặp vấn đề tương tự và tôi đã giải quyết nó khi tôi định cấu hình liên kết thời gian chạy liên kết động để tạo liên kết và bộ nhớ cache cần thiết thư viện bằng cách sử dụng ldconfig command.

Vì vậy, bạn cần phải sử dụng lệnh sau:

sudo ldconfig /usr/local/lib 

Thực ra, tôi lời khuyên để cài đặt lại ImageMagick sử dụng bước tại how-to-install-image-magick-and-setup-paperclip.

0

Chỉ cần cho các hồ sơ:

brew uninstall libtool 
brew install libtool 
brew uninstall jpeg 
brew install jpeg 
brew link --overwrite jpeg 
brew unlink freetype && brew link freetype 
Các vấn đề liên quan