【问题标题】:rails convert html to imagerails 将 html 转换为图像
【发布时间】:2010-12-30 15:11:26
【问题描述】:

我正在寻找一种将 html 标签即时转换为图像的方法...

这意味着,我希望能够制作一个带有路径的 image_tag,该方法返回从 html 中创建的图像。

我一直在寻找解决方案,但找不到合适的方法来解决这个问题......

有什么想法吗?

前知

【问题讨论】:

  • 读了两遍后,我仍然对您要完成的工作感到困惑。
  • 请让大家知道:1)为什么和2)你在说什么标签类型?
  • 图片是 of 一些显示一组标签的 html 代码的图片吗,是在特定浏览器中呈现的页面图片,还是您尝试使用页面的特定部分,比如段落标签,并将其转换为图像,将该段落显示为图像 - 有效的文本到图像生成器。还是完全是另外一回事?
  • 我也对此感兴趣。我想 1)在 html 中呈现页面 2)将页面转换为 jpeg 3)从服务调用中返回 jpeg 全部实时

标签: html ruby-on-rails ruby image rmagick


【解决方案1】:

IMGkit 可以胜任 (details on github)

使用普通的 HTML+CSS 创建 JPG

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

或在您的控制器中

@kit = IMGKit.new(render_as_string)

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

【讨论】:

  • 什么 render_as_string 没有任何参数?我不明白..有人可以指出我的地方吗?应该是render_to_string?无论如何,它有什么作用?
  • 您能否将其中一个“工具包”编辑到文件中以便通过 FTP 发送?
  • @JakubKuchar api.rubyonrails.org/classes/AbstractController/… 第一个参数可以是您想要呈现为字符串的视图的路径,例如“订单/摘要”。文档说得最好:它类似于render,只是它不设置response_body并且应该保证总是返回一个字符串
  • 如果您希望将 HTML 转换为 tiff 文件 IMGKit 是不够的,因为已从底层wkhtmltoimage 应用程序。相关提交:github.com/csquared/IMGKit/commit/…
  • 现在是render_to_string(至少 Rails 7)
【解决方案2】:

我将在这里进行疯狂的猜测,并猜测您想要将 HTML 转换为图像,因此拍摄网页或其他内容的“快照”。我不确定如何一步到位,但一种方法是使用PDFKit 转换为 PDF,然后使用 RMagick 转换为您想要的任何图像格式。

【讨论】:

  • 有人想要这样做的原因是将复杂的 HTML 布局转换为电子邮件友好的布局。
【解决方案3】:

IMGKIT 要求任何背景图片或其他资产的带有绝对 URL 的 css。 因此,您可以按照此链接https://coderwall.com/p/exj0ig 和一些步骤动态生成它

A) 将所有图片放在 rails 应用的 assets/images 文件夹中

B) 如果不安装,请安装 gem 'sass-rails' https://github.com/rails/sass-rails

C)创建另一个css文件名为css_file_name.css.sccs.erb

D) 将所有其他 css 文件内容放入其中。

E) 在 css 文件中,只需将您的图像文件名输入如下: 背景图片:image-url('image.png');

F) 使用资产管道 (http://guides.rubyonrails.org/asset_pipeline.html#how-to-use-the-asset-pipeline) 运行以下命令作为您的应用程序模式: (1) 开发模式:RAILS_ENV=development bundle exec rake assets:precompile (2) 生产模式:RAILS_ENV=production bundle exec rake assets:precompile

G) 在您的配置/环境中/

(1) 开发中.rb config.action_controller.asset_host = "您的本地主机 URL,即 YOUR_LOCALHOST_ADDRESS"

(2) 在生产中.rb config.action_controller.asset_host = "http://assets.example.com" /你的地址/

H) 最后将您的样式表与 IMGKIT 关联如下

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)重启服务器,尽情享受吧!!!!!

[注意:每次更改后,请运行 assets pipline 命令以获取最新的 application.css,它由 .sccs.erb 扩展文件组成。]

【讨论】:

    猜你喜欢
    • 2011-06-02
    • 2010-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-31
    相关资源
    最近更新 更多