论坛首页 编程语言技术论坛

Rmagick快速應用指南

浏览 4291 次
精华帖 (8) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-07-06   最后修改:2010-07-09
鉴于一些莫名其妙的原因,我不得不帮店铺的几个小妹妹写个能加水印的东东,(为啥不用软件...这是个很纠结的问题..版权他妹的)因此就开始收集Rmagick的资料了,先分享如下:

1.入門篇
Rails上的RMagick使用经验之谈
http://www.iteye.com/topic/125487
亮點如下:
(1)使用RMagick,重要会用到两个对象:Image和Draw.这两个对象可以形象的理解为:Image对象相当于画布,Draw对象相当于画笔.
(2)对象的主要功能有:在图片上写字,在图片上画线,把另一张图片组合到当前图片上.
之所以把它定義為入門篇是因為它給我們簡單的介紹了一些語法..語法懂了,具體應用也就是按圖索驥而已....更详细点的可以参考这个文档http://www.imagemagick.org/RMagick/doc/

2.進階篇

接下來讓我們先看兩個例子吧...它们就像孙悟空的如意金刚棒...allmoneycomemyhome....

小小小...
require 'rubygems'
require 'RMagick'
img =  Magick::Image.read('image/rails.png').first
width = img.columns
height = img.rows
thumb = img.resize(width * 0.8, height * 0.8)
thumb.write('image/rails_thumb_1.png') {self.quality = 50} #compress压缩大小


(1)RMagic 处理图片-Magick::Image对象学习_1
  http://www.weekface.info/2010/04/08/ruby-rmagick-imagelist

大大大......
require 'rubygems'
require 'RMagick'
img =  Magick::Image.read('image/rails.png').first #Image.read返回一个数组(因为有时候我们会read一个GIF动画,那么GIF动画的每一帧会存到这个数组里,真是周到)
width, height = 100, 100
thumb = img.resize(width, height) 
thumb.write('image/rails_thumb.png')


(2)RMagic处理图片小试牛刀
http://www.weekface.info/2010/01/30/ruby-rmagic

当然上面的两个例子并不能满足一些实际的要求,要我们来看一个很实际的应用-->水印问题..
(3)ruby中rmgaick给图片加版权信息和水印(中文水印)
http://www.iteye.com/topic/107055
从该篇文章的题目你就可以知道,它是给图片加文字的...这其实也只是小case,不过实例代码还是很有用的....(这篇文章的亮点是...我找不到复制按钮...)

这里还有个实例
(4)使用RMagick制作特效
http://www.iteye.com/topic/559123
  
 Rows = 60
    Cols = 250
    Text = 'Ruby rocks!'
    anim = Magick::ImageList.new
    ex = Magick::Image.new(Cols, Rows)
    text = Magick::Draw.new
    text.gravity = Magick::CenterGravity
    text.pointsize = 36
    text.font_weight = Magick::BoldWeight
    text.font_style = Magick::ItalicStyle
    text.stroke = 'transparent'
    text.annotate(ex, 0, 0, 2, 2, Text) {
      self.fill = 'gray60'
    }
    anim << ex.copy
    ex = ex.blur_image(0, 3)
    anim << ex.copy
    text.annotate(ex, 0, 0, -1, -1, Text) {
      self.fill = 'maroon'
    }
    anim << ex.copy
    anim.delay = 100
    anim.cur_image.delay = 300
    anim.iterations = 0
    anim.write('shadow.gif')
    exit

(为了避免广大死宅去求合体,我先声明一点,该链接的作者是男的.....)

3.實戰篇
由於一直對圖片裁剪情有獨鍾,所以選擇了這兩篇來作實踐例子...

(1)基于jquery和mini_magick的图片裁剪(这篇只是为了跟下面的作对比...虎跑威武..)
http://www.iteye.com/topic/541141

(2)javascript-image-cropper-ui with rails
http://www.iteye.com/topic/437357
def update
    @photo = Photo.find params[:id]
    img = Magick::Image::read(File.expand_path(RAILS_ROOT)+"/public/"+@photo.public_filename(:medium)).first
    img.crop!(::Magick::CenterGravity, params[:x1].to_i, params[:y1].to_i,
      params[:width].to_i, params[:height].to_i, true)
    img.write File.expand_path(RAILS_ROOT)+"/public/"+@photo.public_filename(:thumb)
    redirect_to photo_path(@photo)
end



让我们继续吧....
接下来这两个例子有点老...还没试过..不过里面写的东西倒是挺不错的..
(3)Render Great-looking Collages with Ruby and RMagick(06年的文章....)
http://weare.buildingsky.net/2006/10/18/render-greatlooking-collages-with-ruby-and-rmagick
四个实例:
* Resize and Composite Main image
*Layout Slides
* Add Slide images and Compositep Alpha Channel(阿尔法通道(Alpha Channel)是指一张图片的透明和半透明度)
*Experiment!

(4)Using RMagick with Flickr
http://weare.buildingsky.net/2006/10/23/using-rmagick-with-flickr


下面这篇我还没看...不过有位高人告诉我,这是神器,有它足以秒杀一切需求....
(5)ImageMagick v6 Examples --Annotating Images
http://www.imagemagick.org/Usage/annotating/
按圖索驥,基本上應有盡有,具体用法,看看就懂....


#-----------------------写在最后-----------------------------------------#
对于Rmagick我知道的不多,只是最近刚好需要,于是就学习了下,如果文章里有什么谬误的话,烦请各位大大指出...另外,由于找不到其它实例,所以里面的很多东西都是采自JE的...希望有资源的兄弟们,能够发上来让我学习下...万分感谢..
   发表时间:2010-07-14  
RMagick 已经成为Rails web开发的必备工具了。
0 请登录后投票
   发表时间:2010-07-14   最后修改:2010-07-14
yangzhihuan 写道
RMagick 已经成为Rails web开发的必备工具了。

是啊...基本上凡是要上傳圖片,就得用上它....
BTW,最近圓圓發現了個上傳用的插件,叫CarrierWave

項目地址
http://github.com/jnicklas/carrierwave
Demo
http://github.com/jnicklas/carrierwave-example-app

有空就試用下吧....最好把使用總結也寫寫..嘻嘻..
0 请登录后投票
   发表时间:2010-07-20  
我在找paperclip和RMagick的结合用法,到那时我看了这个,我发现也很受用,谢谢指点
0 请登录后投票
   发表时间:2010-07-20  
jordan0611 写道
我在找paperclip和RMagick的结合用法,到那时我看了这个,我发现也很受用,谢谢指点


paperclip在這里....自己看吧
http://fireflyman.iteye.com/blog/704792
0 请登录后投票
   发表时间:2010-07-30  
可以用paperclip和nginx结合,利用nginx upload module去处理文件,
然后用Rmaigkc去压缩,resize图片.

链接:http://matthewhutchinson.net/2010/1/6/nginx-upload-module-with-paperclip-on-rails
3 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics