плагин timthumb как для рубина на рельсах - PullRequest
1 голос
/ 06 сентября 2011

Для PHP существует мощный и простой в использовании скрипт / плагин для изменения размера на лету, который позволяет мне делать что-то вроде:

http://www.mysite.com/timthumb.php?src=http://www.externalsite.com/image.jpg&h=160&w=300&zc=1&q=100

Позволяет получить изображение с внешнего сайта, а затем создавать эскизы.

  1. Существует ли скрипт равновесия / плагин для ruby ​​на рельсах, который делает то же самое?

  2. Я нашел этот скрипт http://www.cleverleap.com/ruby-thumbnail-generator/, но позволяет ли он получать изображения с внешних сайтов?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 25 сентября 2014

Я просто добавляю это в мой файл application_helper.rb

def timthumb(src, opts={})
    filename = Digest::MD5.hexdigest src
    thumb_asset_path = asset_path("thumbs/#{filename}.jpg")

    # already exists?
    if Rails.application.assets.find_asset "thumbs/#{filename}.jpg" 
        return thumb_asset_path
    end

    # generate the thumb and cache it
    image = Magick::Image::read(src).first
    image.resize_to_fill!(opts[:w], opts[:h])
    image.write("#{Rails.root}/app/assets/images/thumbs/#{filename}.jpg") {
        self.quality = opts[:q]
    }
    image.destroy!

    return thumb_asset_path
end

назови это так

<%= image_tag timthumb(@my_model_obj.image, w:750, h:481, q:100) %>

Зависит от камней 'rmagick' и 'digest'

0 голосов
/ 06 сентября 2011

Проверьте скрепка .Что касается получения изображений с внешнего сайта с использованием скрепки:

require 'open-uri'

class Photo < ActiveRecord::Base

  attr_accessor :remote_url

  has_attached_file :image, :styles => { :thumb => ["32x32#", :png] }

  before_validation :get_remote_image, :if => :remote_url_provided?
  validates_presence_of :remote_url, :if => :remote_url_provided?, :message => 'is invalid or inaccessible'

  ...

  protected

  def remote_url_provided?
    !self.remote_url.blank?
  end

  def get_remote_image
    self.image = Photo.download_remote_image(self.remote_url)
  end

  def self.download_remote_image (uri)
    io = open(URI.parse(uri))
    def io.original_filename; base_uri.path.split('/').last; end
    io.original_filename.blank? ? nil : io
    rescue 
  end

end

Нет необходимости указывать: remote_url - это собственный столбец базы данных, но вы можете, если хотите,

* 1007также настоятельно рекомендуем использовать некоторые средства управления доступом для метода create для контроллера вашей модели и проверки типов содержимого в загружаемом URI, но это уже отдельная тема.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...