Ruby on rails 如果图像超过高度/宽度,请使用carrierwave调整图像大小
我环顾四周,在我尝试自己做这件事之后,找不到解决办法。当用户上传照片时,如果超过了我的最小和最大尺寸,我希望他们能够调整大小。然而,我想要两个条件。从侧面(东/西)拍摄的照片应保持在我设置的尺寸范围内,对于从高处(北/南)拍摄的照片,也应保持相同的尺寸 例如,一个用户上传了一张照片,照片的尺寸是3264x1840。上载的大小应调整为适合584x329。如果上载小于584x329,则不会调整大小 另一个例子是,如果用户上传一张照片,照片的尺寸是2448 x 3264。上载的大小应调整为适合247x329 我试图使用MiniMagick,因为我相信这是必要的。如果我只能使用CarrierWave,那就太完美了,但我认为Minimagik应该用于调整照片大小 我收到的错误是#的“undefined methodRuby on rails 如果图像超过高度/宽度,请使用carrierwave调整图像大小,ruby-on-rails,carrierwave,minimagick,Ruby On Rails,Carrierwave,Minimagick,我环顾四周,在我尝试自己做这件事之后,找不到解决办法。当用户上传照片时,如果超过了我的最小和最大尺寸,我希望他们能够调整大小。然而,我想要两个条件。从侧面(东/西)拍摄的照片应保持在我设置的尺寸范围内,对于从高处(北/南)拍摄的照片,也应保持相同的尺寸 例如,一个用户上传了一张照片,照片的尺寸是3264x1840。上载的大小应调整为适合584x329。如果上载小于584x329,则不会调整大小 另一个例子是,如果用户上传一张照片,照片的尺寸是2448 x 3264。上载的大小应调整为适合247x
resize”,它指向控制器中def create的
@photo=photo.new(params[:photo])
顺便说一句,尺寸很高,因为这些通常是你上传照片时手机的默认尺寸
image_uploader.rb:
class ImageUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
storage :file
# storage :fog
# Override the directory where uploaded files will be stored.
# This is a sensible default for uploaders that are meant to be mounted:
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
process :resize => [584, 329]
def resize_to_limit(width, height)
manipulate! do |img|
img.resize "#{width}x#{height}>"
img = yield(img) if block_given?
img
end
end
# Create different versions of your uploaded files:
version :thumb do
process :resize_to_limit => [200, 200]
end
end
class ImageUploader[584329]
def调整大小至限制(宽度、高度)
操纵do | img|
img.resize“#{width}x#{height}>”
img=如果给定块,产量(img)?
img
结束
结束
#创建上载文件的不同版本:
版本:thumb do
处理:将_调整为_限制=>[200200]
结束
结束
照片控制器:
def create
@photo = Photo.new(params[:photo])
@photo.user = current_user
if @photo.save
flash[:notice] = "Successfully created photos."
redirect_to :back
else
render :action => 'new'
end
end
def resize(width, height, gravity = 'Center')
manipulate! do |img|
img.combine_options do |cmd|
cmd.resize "#{width}"
if img[:width] < img[:height]
cmd.gravity gravity
cmd.background "rgba(255,255,255,0.0)"
cmd.extent "#{width}x#{height}"
end
end
img = yield(img) if block_given?
img
end
end
def创建
@照片=照片。新建(参数[:照片])
@photo.user=当前用户
如果@photo.save
flash[:notice]=“已成功创建照片。”
重定向到:返回
其他的
呈现:操作=>“新建”
结束
结束
def调整大小(宽度、高度、重力=‘中心’)
操纵do | img|
img.combine_选项do| cmd|
cmd.resize“#{width}”
如果img[:宽度]![]()
更改:在图像上载程序中调整大小至过程:调整大小至适合=>[584329]