GithubHelp home page GithubHelp logo

paperclip-meta's Introduction

Simple gem to let paperclip play nice with thumbnails width, height and size.

Paperclip Meta will get image dimensions right after post_process_styles using paperclips own Geometry.from_file. This should make paperclip-meta storage independent.

Quick Start

Add paperclip-meta to Gemfile:

gem 'paperclip-meta'

Create migration:

class AddMetaToAvatar < ActiveRecord::Migration
  def self.up
    add_column :users, :avatar_meta,    :text
  end

  def self.down
    remove_column :users, :avatar_meta
  end
end

Rebuild all thumbnails to fill meta column if you already have some attachments.

Now you can use meta-magic:

<%= image_tag @user.avatar.url, :size => @user.avatar.image_size %>
<%= image_tag @user.avatar.url(:medium), :size => @user.avatar.image_size(:medium) %>
<%= image_tag @user.avatar.url(:thumb), :size => @user.avatar.image_size(:thumb) %>

Internals

Meta column is simple hash:

:style => {
  :width => 100,
  :height => 100,
  :size => 42000
}

This hash will be marshaled and base64 encoded before writing to model attribute.

Meta methods provided:

- width `@user.avatar.width(:thumb)`
- height `@user.avatar.height(:medium)`
- size `@user.avatar.size`

You can pass thumbnail style to all these methods. If style not passed, default_style will be used.

TODO

  • It will be nice to write some tests. :D

paperclip-meta's People

Contributors

kshsieh avatar gzigzigzeo avatar dce avatar perfectlynormal avatar scotterc avatar tommeier avatar ejfinneran avatar daflip avatar jdtornow avatar homanchou avatar

Stargazers

 avatar

Watchers

James Cloos avatar

Forkers

scotterc

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.