2010-12-30 47 views
13

Tôi đang tìm cách chuyển đổi thẻ html thành hình ảnh trên ...đường ray chuyển đổi html sang hình ảnh

Điều đó có nghĩa là tôi muốn có thể tạo image_tag với đường dẫn đến một phương thức trả về hình ảnh đã tạo html.

Tôi đang tìm giải pháp về điều đó, nhưng không thể tìm ra cách thích hợp để giải ...

Bất kỳ ý tưởng nào?

Maechi

+2

Sau khi đọc này hai lần, tôi vẫn còn lẫn lộn những gì bạn đang cố gắng hoàn thành. – tybro0103

+0

Xin vui lòng cho mọi người biết: 1) Tại sao và 2) bạn đang nói về loại thẻ nào? – jschorr

+0

Hình ảnh là một hình ảnh _of_ một số mã html hiển thị một tập hợp các thẻ, một hình ảnh của trang sẽ hiển thị trong một trình duyệt cụ thể hay bạn đang cố gắng lấy một phần cụ thể của trang, nói một thẻ đoạn và vào một hình ảnh hiển thị đoạn văn đó dưới dạng hình ảnh - một văn bản cho trình tạo hình ảnh hiệu quả. Hoặc là nó một cái gì đó khác hoàn toàn? – stef

Trả lời

1

tôi sẽ mất một đoán hoang dã ở đây và đoán mà bạn muốn chuyển đổi HTML sang hình ảnh, vì vậy có một "ảnh chụp" của một trang web hoặc một cái gì đó. Tôi không chắc chắn chính xác làm thế nào để làm điều này trong một bước, nhưng một cách để làm điều đó là sử dụng PDFKit để chuyển đổi sang PDF và sau đó sử dụng RMagick để chuyển đổi sang bất kỳ định dạng hình ảnh nào bạn muốn.

+3

Lý do ai đó muốn làm điều này là chuyển đổi các bố cục HTML phức tạp thành các bố cục thân thiện với email. –

26

IMGkit có thể thực hiện công việc (details on github)

Tạo JPG sử dụng HTML thuần tuý cũ + CSS

kit = IMGKit.new('http://google.com') 
kit.to_jpg 
kit.to_jpeg 
kit.to_png 
kit.to_tif 
kit.to_tiff 

hoặc trong điều khiển của bạn

@kit = IMGKit.new(render_as_string) 

format.jpg do 
    send_data(@kit.to_jpg, :type => "image/jpeg", :disposition => 'inline') 
end 
+0

gì render_as_string mà không có bất kỳ tham số nào? Tôi không hiểu ... có ai chỉ cho tôi ở đâu đó không? Và nên được render_to_string? Trong mọi trường hợp, nó làm gì? –

+0

Bạn có thể chỉnh sửa một trong những 'bộ' đó thành một Tệp để gửi nó qua FTP không? –

+0

@JakubKuchar http://api.rubyonrails.org/classes/AbstractController/Rendering.html#method-i-render_to_string arg đầu tiên có thể là đường dẫn đến chế độ xem bạn muốn hiển thị dưới dạng chuỗi, ví dụ: 'đơn đặt hàng/tóm tắt' . Các tài liệu nói nó tốt nhất: _ Nó tương tự như render, ngoại trừ việc nó không đặt response_body và nó phải được đảm bảo luôn trả về một chuỗi_. –

1

IMGKIT reqiured css với url tuyệt đối cho bất kỳ hình nền nào hoặc các nội dung khác. Vì vậy, bạn có thể tạo ra nó tự động theo liên kết này https://coderwall.com/p/exj0ig và một số bước như

A) Đặt tất cả hình ảnh của bạn trong tài sản/images folder đường ray ứng dụng

B) Cài đặt đá quý 'sass-ray' nếu không cài đặt https://github.com/rails/sass-rails

C) tạo một tên file css như css_file_name.css.sccs.erb

D) đặt tất cả nội dung tệp css khác của bạn vào đó.

E) Trong tệp css chỉ cần đặt tên tệp hình ảnh của bạn như sau: background-image: image-url ('image.png');

F) Sử dụng tài sản pipline (http://guides.rubyonrails.org/asset_pipeline.html#how-to-use-the-asset-pipeline) Run dưới lệnh như chế độ ứng dụng của bạn: (1) chế độ Development Mode: RAILS_ENV = phát triển bó exec cào tài sản: precompile (2) Chế độ sản xuất: RAILS_ENV = bó sản xuất tài sản cào exec: precompile

G) Trong config/môi trường của bạn/

(1) Trong development.rb config.action_controller.asset_host = "bẠN ĐỊA PHƯƠNG URL HOST tức YOUR_LOCALHOST_ADDRES S "

(2) Trong production.rb config.action_controller.asset_host = "http://assets.example.com"/ĐỊA CHỈ CỦA BẠN/

H) Và cuối cùng liên quan stylesheet của bạn với IMGKIT như sau

html_content = "YOUR HTML CONTENT" 
kit = IMGKit.new(html_content, height: 900, transparent:true, quality:10) /*YOUR SETTING*/ 
kit.stylesheets << "#{Rails.root}/public/assets/application.css" 
file = kit.to_file(Rails.root + "public/pngs/" + "screenshot.png") /*YOUR IMAGE NAME*/ 
send_file("#{Rails.root}/public/pngs/screenshot.png", :filename => "screenshot.png", :type => "image/png",:disposition => 'attachment',:streaming=> 'true') /*YOUR ADDRESS WHERE U WANT TO STORE PNG FILE*/ 

I) máy chủ Khởi động lại và thưởng thức !!!!!

[LƯU Ý:. Sau mỗi thay đổi hãy chạy lệnh tài sản pipline để có được application.css mới nhất được làm từ tập tin mở rộng .sccs.erb]

Các vấn đề liên quan