Ориентация изображения и проверка со Скрепкой?

Существует встроенная утилита.NET для этого: HttpUtility. ParseQueryString

// C#
NameValueCollection qscoll = HttpUtility.ParseQueryString(querystring);
' VB.NET
Dim qscoll As NameValueCollection = HttpUtility.ParseQueryString(querystring)

Вы, возможно, должны заменить querystring new Uri(fullUrl).Query.

10
задан Antony Sastre 9 December 2009 в 15:56
поделиться

3 ответа

Вот что я обычно делаю в своих моделях изображений. Возможно, это поможет:

  • Я использую опцию IM -auto-orient при конвертации. Это гарантирует, что изображения всегда правильно поворачиваются после загрузки
  • Я читаю данные EXIF ​​ после обработки и получаю ширину и высоту (среди прочего)
  • Затем вы можете просто иметь метод экземпляра, который выводит строка ориентации на основе ширины и высоты
has_attached_file :attachment, 
  :styles => {
    :large => "900x600>",
    :medium => "600x400>",
    :square => "100x100#", 
    :small => "300x200>" },
  :convert_options => { :all => '-auto-orient' },   
  :storage => :s3,
  :s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
  :s3_permissions => 'public-read',
  :s3_protocol => 'https',
  :path => "images/:id_partition/:basename_:style.:extension"

after_attachment_post_process  :post_process_photo 

def post_process_photo
  imgfile = EXIFR::JPEG.new(attachment.queued_for_write[:original].path)
  return unless imgfile

  self.width         = imgfile.width             
  self.height        = imgfile.height            
  self.model         = imgfile.model             
  self.date_time     = imgfile.date_time         
  self.exposure_time = imgfile.exposure_time.to_s
  self.f_number      = imgfile.f_number.to_f     
  self.focal_length  = imgfile.focal_length.to_s
  self.description   = imgfile.image_description
end
12
ответ дан 3 December 2019 в 20:42
поделиться

Спасибо за ответ, jonnii.

Хотя я нашел то, что искал, в модуле PaperClip :: Geometry.

Эта рабочая находка:

class Image < ActiveRecord::Base
  after_save :set_orientation

  has_attached_file :data, :styles => { :large => "685x", :thumb => "100x100#" }
  validates_attachment_content_type :data, :content_type => ['image/jpeg', 'image/pjpeg'], :message => "has to be in jpeg format"

  private
  def set_orientation
    self.orientation = Paperclip::Geometry.from_file(self.data.to_file).horizontal? ? 'horizontal' : 'vertical'
  end
end

Это, конечно, делает как вертикальные, так и квадратные изображения имеют атрибут vertical, но я все равно этого хотел.

5
ответ дан 3 December 2019 в 20:42
поделиться

Когда я фотографирую фотоаппаратом, размеры изображения одинаковы, независимо от того, альбомная ли фотография или портретная. Однако моя камера достаточно умна, чтобы повернуть изображение за меня! Как задумчиво! Эта работа заключается в использовании так называемых exif data , которые представляют собой метаданные, помещаемые на изображение камерой. Он включает в себя такие вещи, как: тип камеры, время съемки, ориентация и т. Д.

С помощью скрепки вы можете настроить обратные вызовы, в частности, что вы хотите сделать, это иметь обратный вызов в before_post_process , который проверяет ориентацию изображения путем чтения данных exif с помощью библиотеки (вы можете найти список здесь: http://blog.simplificator.com/2008/01/14/ ruby-and-exif-data / ),

1
ответ дан 3 December 2019 в 20:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: