Как создать эскиз веб-сайта без сторонних инструментов? - PullRequest
5 голосов
/ 26 февраля 2012

Существуют ли какие-либо жемчужины для Rails 3.2.1, которые генерируют эскизы веб-сайтов?Я вижу много сторонних решений, но мне не нравится тот факт, что они не размещены на моем сервере.Очень важно, чтобы приложение, которое я создаю, было настолько стабильным, насколько это возможно, и я думаю, что это не очень хорошее решение в долгосрочной перспективе.

Мои знания по ruby ​​достаточно хороши, я думаю, достаточно использовать гемэто, но определенно недостаточно хорошо, чтобы написать что-то вроде этого с нуля, если нет драгоценных камней.

Спасибо!

Ответы [ 5 ]

2 голосов
/ 26 февраля 2012

Вы можете попробовать стрекоза или кавер-волна

1 голос
/ 26 февраля 2012

Ну, вот первое, что появилось на Rubygems: thumbnailer . Он использует Amazon и стоит небольшую плату за генерируемое изображение, так что вы, вероятно, не хотите этого ...

Но есть также thumbnailer-ruby , который выглядит так, как будто он полностью работает на локальной машине. Однако не проверял. Похоже, что на самом деле это не то, что вы хотите. Nevermind.

Теперь еще один камень под названием snapurl выглядит довольно необычно. Еще раз, я еще не пробовал это. Я сделаю это сейчас.

РЕДАКТИРОВАТЬ: не будет бежать за мной; продолжает сбой с ошибкой.

0 голосов
/ 15 марта 2014

Для этого не нужно использовать сторонний сервис.Вы можете сделать что-то подобное в вашей модели:

class MySexyModel < ActiveRecord::Base

  ... stuff

  # Generate the thumbnail on validate so we can return errors on failure
  validate :generate_thumbnail_from_url

  # Cleanup temp files when we are done
  after_save :cleanup_temp_thumbnail

  # Generate a thumbnail from the remote URL
  def generate_thumbnail_from_url

    # Skip thumbnail generation if:
    # a) there are already other validation errors
    # b) an image was manually specified
    # c) an image is already stored and the URL hasn't changed
    skip_generate = self.errors.any? || (self.image_changed? ||
        (self.image_stored? && !self.url_changed?))
    # p "*** generating thumbnail: #{!skip_generate}"
    return if skip_generate

    # Generate and assign an image or set a validation error
    begin
      tempfile = temp_thumbnail_path
      cmd = "wkhtmltoimage --quality 95 \"#{self.url}\" \"#{tempfile}\""
      # p "*** grabbing thumbnail: #{cmd}"
      system(cmd) # sometimes returns false even if image was saved
      self.image = File.new(tempfile) # will throw if not saved
    rescue => e
      # p "*** thumbnail error: #{e}"
      self.errors.add(:base, "Cannot generate thumbnail. Is your URL valid?")
    ensure
    end
  end

  # Return the absolute path to the temporary thumbnail file
  def temp_thumbnail_path
    File.expand_path("#{self.url.parameterize.slice(0, 20)}.jpg", Dragonfly.app.datastore.root_path)
  end

  # Cleanup the temporary thumbnail image
  def cleanup_temp_thumbnail
    File.delete(temp_thumbnail_path) rescue 0
  end
end

Оригинальный пост в этом блоге: http://sourcey.com

0 голосов
/ 15 августа 2012
0 голосов
/ 19 июня 2012

https://url2png.com/ отлично работает до сих пор

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...