请看官先看此文:http://airport.iteye.com/blog/33216
文章最后会有引用文的详细内容!
假设如下场景,一个用户有一个logo图片,支持上传logo图片功能。这里对显示图片和用户图片关系进行下整合。
entry DDL:
sql 代码
- CREATE TABLE `entries` (
- `id` int(11) NOT NULL auto_increment,
- `image` varchar(255) NOT NULL,
- `photoable_id` int(11) NOT NULL,
- `photoable_type` varchar(100) NOT NULL,
- PRIMARY KEY (`id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8
user.rb:
ruby 代码
- class User < ActiveRecord::Base
- has_many :entries, :as => :photoable
-
- def logo_url
- url = "/images/users/default_logo.gif"
- if self != nil and self.logo == 1
- entry = Entry.find(:first, :conditions => "photoable_id = #{self.id}", :order => "uploaded_time desc")
- relative_path = entry.send("image_relative_path", 'thumb')
- return nil unless relative_path
- url = "/entry/image/"
- url << relative_path
- end
- url
- end
-
- end
注意其中的logo_url方法,这个方法参考了file_column中的相关代码直接对图片地址进行了包装。
entry.rb
ruby 代码
- class Entry < ActiveRecord::Base
- belongs_to :photoable, :polymorphic => true
-
- validates_format_of :image,
- :with=>/^.*(.jpg|.JPG|.gif|.GIF)$/,
- :message => "你只能上传JPG或则GIF的图片文件"
-
- file_column :image, :magick => {
- :versions => { "thumb" => "80x80" }
- }
- end
上述代码实现了user和entry的一对多关系,并且实现了多态。这里需要注意的是logo_url方法,此方法修改了File_Column自带的FileColumnHelper::url_for_file_column方法,原方法只能在ActionView中使用,并且需要一个ActionController中的对象,有些时候不是很方便使用。
感谢原文作者提供的帮助!
还有一个需要注意的是,中文文件名上传名称变为"__"的问题,
秦朝古月 给出了解决方案:
file_column上传中文文件名的文件时,汉字变成“_”的解决办法
编辑file_column.rb文件
把方法 self.sanitize_filename(filename)中的
filename.gsub!(/[^a-zA-Z0-9\.\-\+_]/,"_")
给注释掉。
原文引用:
在网站制作过程中,图片上传以及图片的大小调整是经常会用到的一个功能!
Rails结合几个plug-in可以说很智能的做到了这一点
做了一个简单的例子,系统在Windows平台上运行
1.上网下载file-column-0.3.1.tar.gz 和rmagick-win32-1.13.0_IM-6.2.9-3.zip (我当前的最新版本,到下述站点下载 http://rubyforge.org/projects/rmagick/ Linux下版本是RMagick-1.14.1.tar.gz)
2.安装rmagick,执行zip包里面的exe文件,同时把安装路径放到path环境变量里面去,否则可能会报CORE_RL_magick_.dll找不到的错误
3.安装file-column到app的vendor目录里,直接copy过去就行
引用
以下的文件配置基本上按照官方提供的sample来进行,算是用中文整合一下,谈不上原创
4.建立一个存放路径的model,在数据库中建立Entry数据库
并生成相应的scaffold:
ruby script/generate scaffold Entry upload
4.修改model,并限制只能图片上传
代码
- class Entry < ActiveRecord::Base
- validates_format_of :image,
- :with=>/^.*(.jpg|.JPG|.gif|.GIF)$/,
- :message => "你只能上传JPG或则GIF的图片文件"
- file_column :image, :magick => {
- :versions => { "thumb" => "50x50", "medium" => "640x480>" }
- }
- end
<script>render_code();</script>
5.修改_form.rhtml
代码
- <%= error_messages_for 'entry' %>
-
-
- <p><label for="entry_image">Imagelabel><br/>
- <%= file_column_field 'entry', 'image' %>p>
-
<script>render_code();</script>
6.修改new.rhtml
代码
- <h1>New entryh1>
-
- <%= start_form_tag 'create',:multipart => true%>
- <%= render :partial => 'form' %>
- <%= submit_tag "Create" %>
- <%= end_form_tag %>
-
- <%= link_to 'Back', :action => 'list' %>
<script>render_code();</script>
7.修改show.rhtml
代码
- <% for column in Entry.content_columns %>
- <p>
- <b><%= column.human_name %>:b> <%=h @entry.send(column.name) %>
- <br>
- 原始大小:
- <%= image_tag url_for_file_column 'entry', 'image' %>
- <br>
- thumb:
- <%= image_tag url_for_file_column 'entry', 'image' ,'thumb'%>
- <br>
- medium:
- <%= image_tag url_for_file_column 'entry', 'image' ,'medium'%>
- p>
- <% end %>
-
- <%= link_to 'Edit', :action => 'edit', :id => @entry %> |
- <%= link_to 'Back', :action => 'list' %>
<script>render_code();</script>
分享到:
- 2007-07-20 02:20
- 浏览 2788
- 评论(2)
- 论坛回复 / 浏览 (2 / 4281)
- 查看更多
相关推荐
`rmagick-2.3.0-x86-mswin32.gem` 是一个针对Windows平台的Ruby库,主要用于图像处理和操作。这个库是RMagick的封装,它是一个Ruby接口,允许Ruby程序员充分利用ImageMagick和GraphicsMagick这两个强大的图像处理...
安装redmine-3.2.3 ruby on rails 下的插件 rmagick 2.16.0 gem
rails 插件rmagick 2.10.0 gem
RMagick-2.12.0-ImageMagick-6.5.6-8-Q8.rar 包含 rmagick-2.13.2.gem ImageMagick-6.5.6-8-Q8-windows-dll.exe RMagick-2.12.0.tar.gz rmagick-2.12.0-x86-mswin32.gem
Hans-CI用于嵌入式硬件上的持续集成官方网站: : 用户数先决条件通过软件包管理器安装操作系统依赖项:苹果系统brew install opencv imagemagick ninjasudo gem install specific_install和RMagick: sudo gem ...
今天讲解一下rails的图片上传,就是最平常的上传图片 这里的rails版本2.3.5 首先新建一个write_pic model内容如下: 代码如下:class WritePicrequire “RMagick”require “uuid”def self.write(pic_data,ori_name,...
马吉克目录介绍RMagick是Ruby编程语言和ImageMagick图像处理库之间的接口。先决条件最新版本的RMagick需要具备这些先决条件。 操作系统Linux * BSD 苹果系统视窗其他* nix类系统Ruby2.3版或更高版本。 您可以从获得...
hornetseye-rmagick 作者: Jan Wedekind版权所有: 2010许可证: GPL 概要 这个 Ruby 扩展实现了必要的转换,以保存和加载存储在 {Hornetseye::MultiArray} 中的图像。 安装 hornetseye-rmagick使用RMagick Ruby 扩展...
在这个特定的场景中,我们关注的是一个针对 Windows 操作系统的 Ruby Gem 安装包,它包含了 Rmagick 和 ImageMagick 这两个关键组件。 **Rmagick** 是一个 Ruby 绑定库,它提供了与流行的图像处理库 ImageMagick ...
Ruby是一种强大的动态编程语言,广泛应用于Web开发、脚本编写以及各种高级编程任务。...无论是Web应用中的图像上传处理,还是独立的图像处理脚本,RMagick都能满足需求,帮助你实现高效且高质量的图像处理功能。
redmine的一个包文件,可以用来导出为pdf,图像的功能
这是一个用于Ruby和图像的小型实验脚本。 它只需要一些图像并转换成“ -like”(手写效果)。 前: 后: 剧本背后的故事很简单。 我刚刚阅读了 Wolfram 人 Vitaliy Kaurov 的一篇出色的博客,他解释说,如何在 ...
这里有一些例子,后面是算法描述和对实现的一些反思。 来源: ([图片来源]( )) 最简单的自我复制(ltrb是Tardis门上白板的左上右下): ./bin/drosterize -f examples/tardis.jpg -l 409 -t 439 -r 635 -b ...
2. **图像处理**:应用可能使用了某种图像处理库,如`mini_magick`或`rmagick`,来分析上传图像的颜色,并从中提取主要颜色。 3. **颜色理论**:为了生成配色方案,开发者需要理解色彩理论,包括色相、饱和度和亮度...
除了RMagick和MiniMagick,还有其他一些库,如Paperclip和CarrierWave,它们是Ruby中处理上传文件的常用工具,特别适合在Web应用中使用。这两个库不仅处理图像上传,还包含图像缩放、转换格式等功能,并能很好地集成...
使用MiniMagick,ruby进程的内存仍然很小(它生成了ImageMagick的命令行程序mogrify,该程序也占用了一些内存,但是比RMagick小得多)。 请参阅正在 以下。 MiniMagick使您可以访问ImageMagick拥有的所有命令行...
4. `RMagick-2.12.0-ImageMagick-6.5.6-8-Q8.zip`:RMagick gem,用于图像处理,Redmine中的问题可以附带图片。 5. `xampp-win32-1.8.3-0-VC11-installer.exe`:XAMPP,一个免费的Web服务器套件,包括Apache、MySQL...
CentOS下安装配置最新redmine2.3 包含整合apache 安装rmagick
基于rmagick的rails 3的简单验证码实现 经过Rails 3.2.8的测试 安装 添加到Gemfile gem 'easy_captcha' gem 'rmagick' 对于Java,您可以使用 gem 'rmagick4j' 捆绑执行后 rails g easy_captcha: install 配置 ...
6. **与其他库的整合**:libvips可以与其它图像处理库(如OpenCV、ImageMagick)和编程框架(如Python的Pillow,Ruby的RMagick)无缝集成,增强了其在各种项目中的适应性。 7. **应用领域**:由于其高效的特性,...