首页 > 其他 > 详细

「ruby/MiniMagick」用MiniMagick处理图片

时间:2014-04-19 15:28:21      阅读:478      评论:0      收藏:0      [点我收藏+]

包的选择和配置

想用RMagick,但据说内存泄露的问题比较厉害,作为替代品MiniMagick不存在内存泄露的问题。而二者都是使用ImageMagick的,所以需要下载并安装ImageMagick

下面安装ImageMagick:

1
sudo apt-get install imagemagick

安装gem··「mini_magick」

1
gem  install mini_magick --no-ri --no-rdoc

测试和使用mini_magick

引入gem MiniMagick :

1
require "mini_magick"

MiniMagick中的Image对象

MiniMagick::Image

from_file(file, ext = nil)

 

1
img=MiniMagick::Image.open("./pic1.jpg")

 

[](value)

A rather low-level way to interact with the “identify” command. No nice API here, just the crazy stuff you find in ImageMagick. See the examples listed!

@example

1
2
3
4
5
6
7
image["format"]      #=> "TIFF"
image["height"]      #=> 41 (pixels)
image["width"]       #=> 50 (pixels)
image["dimensions"#=> [50, 41]
image["size"]        #=> 2050 (bits)
image["original_at"] #=> 2005-02-23 23:17:24 +0000 (Read from Exif data)
image["EXIF:ExifVersion"] #=> "0220" (Can read anything from Exif)

@param format [String] A format for the “identify” command @see For reference seewww.imagemagick.org/script/command-line-options.php#format @return [String, Numeric, Array, Time, Object] Depends on the method called! Defaults to String for unknown commands

write(output_to)

Writes the temporary file out to either a file location (by passing in a String) or by passing in a Stream that you can write(chunk) to repeatedly

@param output_to [IOStream, String] Some kind of stream object that needs to be read or a file path as a String @return [IOStream, Boolean] If you pass in a file location [String] then you get a success boolean. If its a stream, you get it back. Writes the temporary image that we are using for processing to the output path

shave("宽x高")

1
2
3
4
5
6
7
8
require ‘mini_magick’
img = MiniMagick::Image.from_file “1.jpg”
 
w,h = img[:width],img[:height] #=> [2048, 1536]#取得宽度和高度
shaved_off = ((w-h)/2).round #=> 256
img.shave “#{shaved_off}x0″ #此处表示宽度上左右各截取256个像素,高度上截取0像素
 
img.write “2.jpg”
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/ruby
 
require "mini_magick"
 
def  resize_and_crop(image, square_size)
    if image[:width]<image[:height]
        shave_off=((image[:height]-image[:width])/2).round
        image.shave("0x#{shave_off}")
    elsif image[:width]>image[:height]
        shave_off=((image[:width]-image[:height])/2).round
    end
    geometry=to_geometry(square_size,square_size)
    image.resize(geometry
    return image
end
 
new_image=resize_and_crop(MiniMagick::Image.from_file("1.jpg"))

 

 

 

 

 

 

 

「ruby/MiniMagick」用MiniMagick处理图片,布布扣,bubuko.com

「ruby/MiniMagick」用MiniMagick处理图片

原文:http://www.cnblogs.com/lizunicon/p/3674605.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!