2009-07-22 10 views
7

Tôi tải lên ảnh, đó là hình chữ nhật. Làm thế nào tôi có thể làm cho nó thay đổi kích cỡ và điền vào một hình vuông?Làm thế nào để cắt & điền bằng Paperclip (hoặc RMagick)?

Ý tôi là khi ảnh nằm ở vị trí ngang, nó phải có ở trên và dưới nó, hai ô màu trắng (để giữ hình dạng của hình vuông) và khi nó theo chiều dọc, nó sẽ có hai ô màu trắng ở hai bên của ảnh .

Khi tôi sử dụng PHP, một đã sử dụng này http://www.verot.net/php_class_upload_samples.htm

Có một cái nhìn tại

100x150, giữ tỷ lệ, đổ đầy trên và dưới

dụ

tôi đang sử dụng Paperclip với RoR. Làm thế nào là cách tốt nhất để làm điều đó?

Trả lời

1

Bạn cần xác định kiểu. Here's an example.

+0

Vâng, tôi biết, nhưng cách thực hiện việc này? http://www.imagemagick.org/Usage/thumbnails/#fit – astropanic

+0

has_attached_file: picture,: styles => {: custom => "100x100>"} –

+0

điều này không làm trung tâm hình ảnh trong hộp vuông – astropanic

17

Đây là những gì tôi đã sử dụng trên đường ray 3 ứng dụng w/kẹp giấy. Tôi đã sử dụng các tùy chọn ImageMagick sau đây để làm cho nó tập trung: nền, soạn, trọng lực và mức độ. Tôi đang sử dụng bộ xử lý mini_magick.

has_attached_file :image, 
    :styles => { :large => ["855x570>", :jpg], :medium => ["432x288>", :jpg], :small => ["276x184>", :jpg], :tiny => ["195x130>", :jpg] }, 
    :processor => "mini_magick", 
    :convert_options => { 
    :medium => "-background white -compose Copy -gravity center -extent 432x288", 
    :small => "-background white -compose Copy -gravity center -extent 276x184", 
    :tiny => "-background white -compose Copy -gravity center -extent 195x130" 
    } 
+1

Ví dụ được viết tốt. Điều này làm việc trong Rails 4 với Paperclip 3.5.4. FYI Imagemagick mặc định màu nền là trắng nên không cần thiết phải chỉ định tùy chọn đó. 'medium: '-compose Copy -gravity center -extent 432x288'' – scarver2

+0

Chỉ cần một cái đầu: đảm bảo rằng bạn không có dấu' #' trong định nghĩa kiểu dáng. Vì vậy, ': large = [" 855x570 # ",: jpg]' sẽ không hoạt động, vì '#' sau '855x570' cho biết kẹp giấy để cắt và căn giữa hình ảnh. –