使用Rails资产管道时包括图像的宽度和高度

例如,在使用rails资产管道时,image_tag "logo.png"会导致以下HTML:

<img src="/assets/logo-0c1cd0fb.png">

rails是否有可能自动检测图像的尺寸(宽度和高度),以便它生成一个包含尺寸的HTML,以便更快地呈现页面,如下所示:

<img src="/assets/logo-0c1cd0fb.png" width="230" height="32">

由于您可能需要一半大小的视网膜图像,因此我想改善@iblue的答案。我更改了一些行来简化此操作。您需要fastimage gem并将以下代码放入ApplicationHelper中。

  def retina_image_tag(source, options = {})
    if !options[:size] # Do not overwrite size if already set by caller
      @@image_size ||= {} # Cache for image sizes
      if !@@image_size[source] # Fill cache
        @@image_size[source] = FastImage.size(::Rails.root.to_s+"/app/assets/images/#{source}", :raise_on_failure => true)
        @@image_size[source] = [@@image_size[source][0]/2, @@image_size[source][1]/2]
      end
      options = options.merge(:style => "max-width:" + @@image_size[source][0].to_s + "px")
    end
    image_tag(source, options)
  end

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章