我在我的一个项目中使用IMGKIT,必须使用它们的css和html选项来满足请求。我注意到,如果样式表设置如下:
kit = IMGKit.new(html, :quality => 50)
kit.stylesheets << '/path/to/css/file'而且样式表具有一个具有相对url('image.png')的背景属性,在使用kit.to_file导出它时不会生成图像:
(Rails.root + "public/pngs/" + "image.png")请求挂起,如果我们用协议、主机和端口将后台url替换成完整的url,那么它就可以很好地导出。
我是否需要对样式表中的所有图像都有绝对的urls?
我尝试在我的asset_host文件中定义development.rb:
config.action_controller.asset_host = Proc.new { |source|
"#{request.protocol}#{request.host_with_port}"
}如果我检查浏览器,它确实会替换css中的url,但是在通过IMGKIT导出时仍然不会生成图像。
发布于 2013-03-20 10:21:58
IMGKIT为任何背景图像或其他资产使用绝对url重新定义css。因此,您可以按照以下链接( https://coderwall.com/p/exj0ig )动态生成它,并按照以下步骤生成
A)将您的所有图像放在rails应用程序的资产/图像文件夹中
B)安装gem 'sass-rails‘如果没有安装https://github.com/rails/sass-rails
C)创建另一个css文件名为css_file_name.css.sccs.erb
D)将所有其他css文件内容放入其中。
E) css文件中的只需将您的图像文件名如下:背景-图像:image.png(‘image.png’);
F)使用命令下运行的assets (pipeline.html#how-to-use-the-asset-pipeline)作为应用模式:(1)开发模式: RAILS_ENV=development bundle exec rake资产:预编译(2)生产模式: RAILS_ENV=production包exec资产:预编译
G)在您的配置/环境/
(1)在development.rb config.action_controller.asset_host =“您的本地主机URL即YOUR_LOCALHOST_ADDRESS”中
(2)在production.rb config.action_controller.asset_host = "http://assets.example.com“/YOUR地址/中
H)和last将样式表与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命令,以获得由.sccs.erb扩展名文件生成的最新application.css。
https://stackoverflow.com/questions/14208403
复制相似问题