проблема с изменением размера скрепки - PullRequest
0 голосов
/ 19 января 2019

изменение размера моего изображения не работает должным образом. У меня также установлена ​​программа imagemagick. Вот так выглядят мои изображения в данный момент. enter image description here

Я хочу, чтобы все они были одинакового размера.

<% products.each do |product| %>
    <div class="col-md-4">
        <div class="panel panel-default home">
            <div class="panel-heading preview">
                <%= image_tag product.cover_photo(:medium) %>
            </div>
            <div class="panel-body">
                <%= link_to product.name, product %><br/>
                $<%= product.price %> - <%= product.weight %><br/>
                <%= product.strain_type %><br/>
                <%= product.product_type %><br/>
                <span style="color: red;">THC: <%= product.percentage %>%</span>
            </div>
        </div>
    </div>
<% end %>

Вот мой файл photo.rb со скрепкой

class Photo < ApplicationRecord
  belongs_to :product

  # IMAGES FOR PRODUCTS
  has_attached_file :image, styles: { medium: "350x350>", thumb: "100x100>" }
  validates_attachment_content_type :image, content_type: /\Aimage\/.*\z/


end

У меня есть метод внутри моей модели продукта

class Product < ApplicationRecord
  enum instant: {Instant: 0, Request: 1}




    belongs_to :user
    has_many :photos, dependent: :destroy
  has_many :orders, dependent: :destroy
  has_many :guest_reviews , dependent: :destroy

    geocoded_by :address
    after_validation :geocode, if: :address_changed?

    def cover_photo(size)
    if self.photos.length > 0
      self.photos[0].image.url(size)
    else
      "blank.jpg"
    end
  end

  def thumbnail input
    return self.photos[input].variant(resize: '625x415!').processed
  end

  def average_rating
    guest_reviews.count == 0 ? 0 : guest_reviews.average(:star).round(2).to_i
  end
end

1 Ответ

0 голосов
/ 19 января 2019

с помощью конечного знака (#) изображение будет обрезано по центру, обеспечивая требуемые размеры.

class Photo < ApplicationRecord
  belongs_to :product

  # IMAGES FOR PRODUCTS
  has_attached_file :image,
    styles: { medium: "350x350#", thumb: "100x100#" },
    convert_options: { :thumb => "-quality 60 -strip" }
  validates_attachment_content_type :image, content_type: /\Aimage\/.*\z/

end

дополнительное примечание:

  • при конвертации вы можете установить качество с помощью convert_options, чтобы сделать его меньше и быстрее загружаться
  • хотя есть возможность подогнать изображение, но что-то результат это не хорошо, особенно если фото не такие же размеры например, если кто-то загружает фото с 1000 х 500 потом результат в основном не хороший
...