Существует встроенная утилита.NET для этого: HttpUtility. ParseQueryString
// C#
NameValueCollection qscoll = HttpUtility.ParseQueryString(querystring);
' VB.NET
Dim qscoll As NameValueCollection = HttpUtility.ParseQueryString(querystring)
Вы, возможно, должны заменить querystring
new Uri(fullUrl).Query
.
Вот что я обычно делаю в своих моделях изображений. Возможно, это поможет:
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
Спасибо за ответ, 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, но я все равно этого хотел.
Когда я фотографирую фотоаппаратом, размеры изображения одинаковы, независимо от того, альбомная ли фотография или портретная. Однако моя камера достаточно умна, чтобы повернуть изображение за меня! Как задумчиво! Эта работа заключается в использовании так называемых exif data
, которые представляют собой метаданные, помещаемые на изображение камерой. Он включает в себя такие вещи, как: тип камеры, время съемки, ориентация и т. Д.
С помощью скрепки вы можете настроить обратные вызовы, в частности, что вы хотите сделать, это иметь обратный вызов в before_post_process
, который проверяет ориентацию изображения путем чтения данных exif с помощью библиотеки (вы можете найти список здесь: http://blog.simplificator.com/2008/01/14/ ruby-and-exif-data / ),